PHP之面向对象学习


1、类

Class lio{

Public 

Protect

Private

Function __constructor(){}

}

2、类的实例化

<?php 

class lio{

//定义属性,需要加权限修饰符

public $a="lveo";

//定义方法,需要加权限修饰符

public function running(){

echo 521;

}

public function lovea(){

echo "do something";

}

}

//类的实例化

$name=new lio();

 

//实例化对象的属性和方法访问

echo $name->a;

$name->lovea();

 

?>

3、类的构造函数和析构函数

<?php 

class lio{

//定义属性,需要加权限修饰符

public $a="lveo";

//定义方法,需要加权限修饰符

public function running(){

echo 521;

}

public function lovea(){

echo "do something";

}

//不需要权限修饰符 public

function __construct($name){

echo "start";

//$this指实例化的对象

$this->name=$name;

}

function __destruct(){

echo "say goodBye";

}

}

//类的实例化

$name=new lio("sanmei ");

echo $name->name;

?>

4、析构函数

对象的赋值和引用,在对象$XXX=null;之后会产生不同结果

 

 

5、对象的继承(单继承)

<?php 

class lio{

public $name='lio';

public $age=22;

//共有方法

public function love(){

echo "love sanmei";

}

 

//不需要权限修饰符 public

function __construct($name){

echo "start\n";

//$this指实例化的对象

$this->name=$name;

}

}

//son继承 lio

class son extends lio{

function __construct($name){

echo "$name".'1234';

}

}

//类的实例化

$name=new son("sanmei");

//继承中,使用父类的方法

$name->love();

 

?>

 

6、访问控制

Public  :共有的类成员

Private : 私有的类成员

Protect : 受保护的,子类可以访问

 

<?php 

class lio{

public $name='lio';

public $age=22;

//共有方法

public function love(){

echo "love sanmei";

}

 

//protect

protected $pro="baohu";

//private

private $pri="siyoude";

//不需要权限修饰符 public

/* function __construct($name){

echo "start\n";

//$this指实例化的对象

$this->name=$name;

} */

}

//son继承 lio

class son extends lio{

public $pub="pub";

public function getpri(){

echo $pri;

}

//protect

protected $pro="baohu";

//private

private $pri="siyoude";

/* function __construct($name){

echo "$name".'1234';

} */

}

//类的实例化

$name=new son("sanmei");

//public可以访问

echo $name->pub;

 

//protect只在子类中

 

//通过public function 实现调用private属性

 

$name->getpri();

 

//private 只在本类中

echo $name->pri;//会报错

 

?>

 

<?php 

class fa{

public $a=123;

protected $b=234;

private $c=345;

public function xie(){

echo $this->c;//必须通过$this 来访问

}

}

class son extends fa{

function __construct(){

$this->xie();

}

}

$na=new fa();

$na->xie();

?>

7、Static 静态关键字

<?php 

class fa{

public $a=123;

protected $b=234;

private $c=345;

public static $d="love you";

public function xie(){

echo $this->c;//必须通过$this 来访问

}

public function ss(){

//在类中静态属性通过self来定义

echo self::$d;

}

public  static function dd(){

echo 1234;

}

}

class son extends fa{

function __construct(){

$this->xie();

}

    //在子类中用parent来访问 父类的静态变量

    //echo parent::$d;

}

//在类外通过类名::直接访问

echo fa::$d;

fa::dd();

//通过对象访问

$na=new fa();

$na->xie();

$na->ss();

?>

静态方法不能用$this来访问

8、Final 关键字,防止重新赋值 重写

Fatal error: Cannot override final method bs::text() in D:\wamp\www\StudyObj\index.php on line 18

 

<?php 

//如果类前加上final则该类不能被任何类继承的类,可以在class之前添加final

class bs{

final public $a=123;

public function a(){

echo 123;

}

//不能在子类中重写方法

final public function text(){

echo "1231321";

}

}

class son extends bs{

//重写,和父类一致的方法

public function a($temp='lio'){

echo $temp;

}

public function text(){

echo 2345;

}

}

$lio=new son();

$lio->a();

?>

 

9、数据访问

重写过程中用parent::来访问父类中的方法,常量不需要$

 

 

10、对象接口

<?php 

//接口只有方法声明

interface ss{

public function eat($food);

}

//继承接口的类必须实现方法体

class son{

public $a=123;

public function eat($food){

echo "lio eat".$food;

}

}

 

//继承接口的类必须实现方法体

class sonn{

public $a=123;

public function eat($food){

echo "lio drink".$food;

}

}

$lio=new son();

$li=new  sonn();

 

$lio->eat('nice');

$li->eat('water');

 

var_dump($li instanceof ss);

 

function check($obj){

if(var_dump($obj instanceof ss)){

$obj->eat('lio');

}else{

echo "cant eat";

}

}

 

可以用extends  实现接口继承接口

 

?>

11、多态

就是同一个接口,不同类去继承的时候,实现的方法体可能会不一样,这样就造成了多态,极大地提高了灵活性

传入对象不同,实现的方法不同

var_dump($li instanceof ss);

function check($obj){

if(var_dump($obj instanceof ss)){

$obj->eat('lio');

}else{

echo "cant eat";

}

12、抽象类

方法可以实现也可以不实现,间与接口和类之间

 

<?php 

//抽象类里的方法可以实现,抽象方法只有声明,没有方法实现,非抽象方法可以有方法体

abstract class lio{

public $a=123;

public function name($name){

echo $name;

}

abstract public function aa(){

echo 132123;

}

}

class son extends lio{

function __construct(){

echo "start";

}

}

 

$name=new son();

$name->name('Lio');

?>

13、魔术方法--- __tostring()__invoke()

当成字符串输出时

<?php 

class lio{

function __toString(){

//必须是return

return "12345";

}

}

$name=new lio();

echo $name;

?>

 

当成方法时

<?php 

class lio{

function __toString(){

//必须是return

return "12345";

}

function __invoke($temp){

echo $temp;

}

}

$name=new lio();

$name(5);

?>

14、魔术方法--- __call__callStatic

<?php 

class lio{

//重载

public function __call($name,$arguments){

echo "wo ai sanmei";

}

public static function __callstatic($name,$arguments){

echo "static wo ai sanmei";

}

}

$name=new lio();

$name->asd('lio','lio');

 

lio::res('lio','lio');

?>

15、魔术方法--- __get()__set()

<?php 

class lio{

public function __get($name){

return "123123";

}

public function __set($name){

echo 123123123;

}

}

$name=new lio();

//就像定义了一样去使用

echo $name->time;

$name->time=1231312321313;

?>

 

16、魔术方法--- __isset()__unset()

属性的重载

 

 

17、魔术方法--- __clone()

<?php 

class lio{

public $name=123;

function __clone(){

//clone的时候不一样

$this->name="love you";

}

}

$name=new lio();

$name->name='aaaaa';

echo $name->name;

$san=clone $name;

echo $san->name;

$san->name='sssssss';

echo $san->name;

//使用lone初始化的name,在改变数据但不影响原对象

$mei=clone $name;

 

?>


内容概要:本文探讨了在MATLAB/SimuLink环境中进行三相STATCOM(静态同步补偿器)无功补偿的技术方法及其仿真过程。首先介绍了STATCOM作为无功功率补偿装置的工作原理,即通过调节交流电压的幅值和相位来实现对无功功率的有效管理。接着详细描述了在MATLAB/SimuLink平台下构建三相STATCOM仿真模型的具体步骤,包括创建新模型、添加电源和负载、搭建主电路、加入控制模块以及完成整个电路的连接。然后阐述了如何通过对STATCOM输出电压和电流的精确调控达到无功补偿的目的,并展示了具体的仿真结果分析方法,如读取仿真数据、提取关键参数、绘制无功功率变化曲线等。最后指出,这种技术可以显著提升电力系统的稳定性与电能质量,展望了STATCOM在未来的发展潜力。 适合人群:电气工程专业学生、从事电力系统相关工作的技术人员、希望深入了解无功补偿技术的研究人员。 使用场景及目标:适用于想要掌握MATLAB/SimuLink软件操作技能的人群,特别是那些专注于电力电子领域的从业者;旨在帮助他们学会建立复杂的电力系统仿真模型,以便更好地理解STATCOM的工作机制,进而优化实际项目中的无功补偿方案。 其他说明:文中提供的实例代码可以帮助读者直观地了解如何从零开始构建一个完整的三相STATCOM仿真环境,并通过图形化的方式展示无功补偿的效果,便于进一步的学习与研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值