-
对象引用赋值
查看全部 -
对象的基本实践
构造函数function __construct
当对象不会再被使用的时候会触发析构函数function __destruct
析构函数一般用于清理程序使用的资源,比如一个程序用了打印机资源,可以在析构函数释放打印机资源‘
对象引用赋值
$obj = new cls();
$newobj1 = $obj
$newobj2 = &$obj
$obj 、$newobj1、$newobj2 都是对象的引用
$obj、$newobj1是对象的两个独立引用,如果其中一个引用改了对象的属性,另一个引用的属性都改了。如果一个引用设置成了null,则不会影响另外一个引用。
$newobj2是$obj的影子,使用对象的同一个引用,如果其中一个引用改了对象的属性,另一个引用的属性都改了,任何一个赋值为空相当于删除了同一个引用。查看全部 -
function __destruct(){} 析构函数,与构造函数不同的是,构造函数必须在new实例化对象的时候才会被调用
1.析构函数是在所有程序运行完结束才调用析构函数的,而且是根据后入先出的原则,除非在执行过程中触发了析构函数,会立即调用析构函数
2.把变量设置为空可以立即调用析构函数
3.在实例化一个对象并且访问成员属性,再实例第二个对象,再继续访问成员属性,这样析构函数也不会立即触发,直到程序执行结束(就是到末尾啦)
4 当一个类被实例化,不再引用时会自动调用析构函数
析构函数一般在程序结束后调用。如果想要提前调用,也就是说想要提前结束,那么就把对象变量设为null,同时如果存在其他引用指向这个对象的变量的话,都要将其变为null,才算该对象不再调用,已经结束。查看全部 -
构造函数:function __construct(){}
构造函数在对象被实例化的时候自动调用
$this是PHP中伪变量,表示对象本身查看全部 -
类的定义:
以关键字calss开始,后面跟着这个类的名称。
类的命名通常每个单词的第一个字母大写。
以中括号开始和结束。
查看全部 -
3.2 类的实例化
类的示例化就是通过类定义创建一个类的对象
类的定义里面属性值都是空的,而对象的属性值都有具体的值查看全部 -
类的概念:
具有相同属性和方法的对象的集合,类的属性和方法,称为类的成员,即类成员。它不涉及到具体的值
如果有具体的值的话,则是类的实例化。查看全部 -
2.7 面对对象的基本原则
对象内部是高内聚的
- 对象只负责一项特定的职能(职能可大可小)
- 所有对象相关的内容都封装到对象的
2.对象对外是低耦合的
- 外部世界可以看到对象的一些属性(并非全部)
- 外部世界可以看到对象可以做某些事情(并非全部)查看全部 -
面向对象的基本思路
识别对象
- 任何实体都可以被识别为一个对象
识别对象的属性
- 对象里面存储的数据被识别为属性
- 对于不同的业务逻辑,关注的数据不同,对象里面存储的属性也不同
3. 识别对象的行为
- 对象自己属性数据的改变
- 对象和外部交互
查看全部 -
面向对象--实质
面向对象就是把生活中要解决的问题都用对象的方式进行存储
- 属性
- 方法
2.对象与对象之间通过方式的调用完成互动查看全部 -
面向对象编程的基本概念
什么是面向对象?
面向对象编程就是在编程的时候数据结构(数据组织方式)都通过对象的结构进行存储
- 属性、方法
(编程的时候把数据结构都通过属性、方法的形式组织起来
为什么要使用面向对象?
对象的描述方式更贴合真实的世界,程序设计的过程中用对象的视角分析世界的时候能够拉近程序设计和真实世界的距离。
查看全部 -
对象的特点
1.每个对象都是独一无二的(一个人)
2.对象是特定事物,他的职能是完成特定的功能(学习、生活、工作等)
3.对象是可以重复使用的 (学习完之后还可以继续学习)查看全部 -
对象的基本组成
对象包含两部分
1.对象的组成元素
是对象的数据模型,用于描述对象的数据
又被称为对象的属性,或者对象的成员变量
2. 对象的行为
是对象的行为模型,用于描述对象能够做什么事情,又被称为对象的方法查看全部 -
面向对象 object oriented 抽象的也是对象。查看全部
-
<?php class MagicTest{ public $name; public static $arr=[]; //__tostring会在把对象转换为string的时候自动调用 public function __tostring(){ return "this is the class MagicTest"; } //__invoke会在把对象当作一个方法的时候会自动调用 public function __invoke($x){ return "__invoke called with parameter".$x."\n"; } //方法重载 public function __call($name,$arguments){ echo "Calling ".$name." width parameters: ".implode(',',$arguments).""; } //静态方法重载 public static function __callStatic($name,$arguments){ echo "Static calling ".$name." width parameters: ".implode(',',$arguments).""; } //-------属性重载------ public function __get($name){ return $name; } public function __set($name,$value){ self::$arr[$name]=$value;//如动态设置 } public function __isset($name){ echo "__isset invoked".$name."\n"; } public function __unset($name){ echo "unset property".$name."\n"; } //-------------clone后实例前执行------------------ public function __clone(){ $this->name = "TBD"; } } $obj = new MagicTest(); echo $obj.'\n'; $obj(5); //方法重载 $obj->runTest("para1","para2");//Calling runTest width para... MagicTest::runTest("para1","para2");//Static calling runTest width ... //属性重载 echo $obj->className."\n"; $obj->className = "MagicClassX\n"; echo isset($obj->className) .'\n'; echo empty($obj->className) .'\n'; unset($obj->className); //复制对象实例 $obj2 = clone $obj;//会执行__clone $obj2 ->name = 'obj2';//只改变了obj2,没有改$obj ?>
查看全部 -
1、面向对象--继承 extends
子类拥有父类定义的类成员
子类可以修改或调整父类定义的类成员
在子类中,父类的属性也可以通过$this访问
extends后面只能跟一个类名,这就是php的单继承原则,这就是php的单继承原则
2、面向对象--访问控制
public公有的类成员,所有类可以访问
protected受保护的类成员,自身和子类可以访问
private 私有类,类成员只能在类内部访问
3、面向对象-静态成员
1)静态属性定义时在访问控制关键字后面添加static关键字即可
2)静态属性用于保存类的公有数据
3)静态方法里面只能访问静态属性
4)静态成员不需要实例化对象就可以访问
5)类的内部可以通过seft::或者static::关键字访问自身静态成员
6)可以通过parent::关键字访问父类静态成员
7)可以通过类的名称::在类定义外部访问静态成员
4、面向对象--final成员
子类中编写跟父类方法名完全一致的方法可以完成对父类方法的重写overwrite
不想让子类修改方法,在方法添加final关键字
final public function
不想让子类继承类,在类添加final关键字到final class
5、数据访问
1)用parent关键字可以访问父类被子类重写的方法
2)self::可以访问类自身成员方法,也可以用于访问自身静态成员和类常量;不饿能访问类自身的属性;使用常量的时候不需要在常量名称前面添加$符号
3)static关键字用于访问类自身定义的静态成员,访问静态属性时需要在属性前面添加$符号
6、面向对象--接口
1)interface关键字用于定义接口,里面的方法只需定义,不需要具体实现。
interface ICanEat{
}
2)implements 关键字用于便是类实现某个接口
3)实现了某个接口之后,必须提供接口中定义的方法的具体实现
4)不能实例化接口
5)可以用instanceof关键字来判断某个对象是否实现了某个接口,实现了就可以用对象调用方法
6)可以用extends让接口继承接口,当类实现子接口时,父接口定义的方法也需要在这个类里面具体实现
7、面向对象--多态
相同的一行代码,对于传入不同的接口的实现的对象的时候,表现是不同的,这就是多态;这个很重要
function checkEat($obj){
if($obj instanceof ICanEat){
$obj->eat('foo');
}
}
8、面向对象--抽象类
接口里面的方法是没有实现的,而类里面的方法都是有实现的,那么抽象类就是可以包含没有实现的方法,又有实现的方法。
//abstract关键字用于定义抽象类
abstract class ACanEat{
//
abstract public function eat($food);//没有实现
public function breath(){//已实现
echo 'breath';
}
}
//继承抽象类的关键字是extends
class Human extends ACanEat{
//继承抽象类的子类需要实现抽象类中定义的抽象方法
public function eat($food){
//实现
}
}
Human可以用breath和eat方法
查看全部 -
对象的基本实践
构造函数function __construct
当对象不会再被使用的时候会触发析构函数function __destruct
析构函数一般用于清理程序使用的资源,比如一个程序用了打印机资源,可以在析构函数释放打印机资源‘
对象引用赋值
$obj = new cls();
$newobj1 = $obj
$newobj2 = &$obj
$obj 、$newobj1、$newobj2 都是对象的引用
$obj、$newobj1是对象的两个独立引用,如果其中一个引用改了对象的属性,另一个引用的属性都改了。如果一个引用设置成了null,则不会影响另外一个引用。
$newobj2是$obj的影子,使用对象的同一个引用,如果其中一个引用改了对象的属性,另一个引用的属性都改了,任何一个赋值为空相当于删除了同一个引用。
查看全部 -
对象引用赋值,什么时候调用析构函数
查看全部 -
php的使用面向对象的重要性查看全部
-
。。。。。。。
查看全部 -
,,,,,,
查看全部 -
...............
查看全部 -
<?php// 类的定义以关键字class开始,后面跟类名,类名通常第一个字母大写class NbaPlayer{ public $name="jordan"; //定义属性 public $height="198cm"; public $team="bull"; public function run(){ //定义方法 echo "running"; } public function shoot(){ echo "shooting"; } }//类到对象的实例化//类的实例化为对象时使用关键字new$jordan = new NbaPlayer();echo $jordan->name;$jordan->run();$jordan->shoot();?>
查看全部 -
类的定义属性值是空的,而对象的属性有具体值。
查看全部 -
。。。。。。。
查看全部
举报