OOP的四个魔术方法】的更多相关文章

1 __autoload()自动包含类文件 通常会把类的定义单独写到一个文件里,要在另外的文件调用时需要引用require,但类的定义文件会很多就会造成一下问题 //1 如果包含多个类文件,需要一一引入 //2 引入多个类,如果用不到会浪费 //3 引入类文件可能会遗漏,比如:创建了一个对象,而这个对象的类文件没有引入,就会产生错误 所以用__autoload()动态引入类文件,当一个对象被实例化时,就会自动调用__autoload()函数,将类名作为字符串参数传递给它,所以可以这么做: Com…
在面向对象语言中,有一个很重要的概念——overload,即重载.所谓重载,一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同.但是,在php中,这个概念跟大多面向对象语言中的“重载”一点关系都没有,根本就是风马牛不相及的. php中的重载,是指动态地"创建"类属性和方法.当调用当前环境下未定义或不可见的类属性或方法时,重载方法会被调用.再说的直白点,就是访问一个类或者对象的不可访问的属性或者方法的时候的一种处理机制.(不可访问,比如不存在或者因访问关键字的限制而…
一.关键字的使用 1.final关键字 只能用来修饰类 和 成员方法  不能修饰成员属性 被final修饰的类不能被继承 用final修饰的成员方法 不能被子类覆盖(重写) <?php // final class A{ //被修饰的类不能被继承 class A{ //被修饰成员方法不能被子类覆盖 final public function func(){ echo "你好"; } } class B extends A{ public function func(){ echo…
一.__init__魔术属性 触发时机:实例化对象,初始化的时候触发功能:为对象添加成员,用来做初始化的参数:参数不固定,至少一个self参数返回值:无 1.基本用法 #例:class MyClass():    def __init__(self):        #print(111)        self.name = "one"#实例化对象 [类的实例化]obj = MyClass()print(obj.name) 2.__init__可以传递多个参数 #例:class My…
静态  static关键字 普通成员普通成员是属于对象的 静态成员静态成员是属于类的 普通方法里面可以调用静态成员静态方法里面不能调用普通成员self关键字 在类里面代表该类 普通类class Ren { public $name="张三"; public static $zhongzu; //静态成员 普通方法 function Say() { echo self::$zhongzu."你好"; } 静态类static function Run() { echo…
串行化serialize可以把变量包括对象,转化成连续bytes数据. 你可以将串行化后的变量存在一个文件里或在网络上传输. 然后再反串行化还原为原来的数据. 你在反串行化类的对象之前定义的类,PHP可以成功地存储其对象的属性和方法. 有时你可能需要一个对象在反串行化后立即执行. 为了这样的目的,PHP会自动寻找__sleep和__wakeup方法. 当一个对象被串行化,PHP会调用__sleep方法(如果存在的话). 在反串行化一个对象后,PHP 会调用__wakeup方法. 这两个方法都不接…
一.什么是魔术方法: PHP为我们提供了一系列用__开头的函数,这些函数无需自己手动调用,会在合适的时机自动调用,这类函数称为魔术函数.例如: function __construct(){} 在new一个新对象时自动调用此函数 二.PHP中都有那些魔术方法,以及它们的作用:1.__construct():构造函数,new对象时自动调用 eg: class Person{ public $name; public $age; function __construct($name,$age){ $…
反射 reflection 也有人称之为自省 作用: 运行时获取.添加对象的类型定义信息,包括类 内建方法: getattr(object, name[, default])   返回object对象的name属性的值(name必须为字符串),当属性不存在时,将使用default返回,如果没有default,就会抛出AttributeError异常.setattr(object, name, value)   设置object对象的name属性值,如果存在则覆盖,不存在就新增.hasattr(o…
1.构造函数:__construct(): 构造函数是类中的一个特殊函数,当我们使用new关键字实例化对象时,相当于调用了类的构造函数. function __construct($name){ $this -> name = $name; } 2.析构函数:__destruct(): ①析构函数在对象被销毁释放之前自动调用: ②析构函数不能带有任何的参数: ③析构函数常用于对象使用完以后,释放资源,关闭资源等. function __destruct(){ echo "over!&quo…
一.面向对象与面向过程的区别: 二者都是一种思想,面向对象是相对于面向过程而言的.面向过程,强调的是功能行为.面向对象,将功能封装进对象,强调具备了功能的对象.面向对象更加强调运用人类在日常的思维逻辑中采用的思想方法与原则. 二.面向对象的三大特征: ①封装(Encapsulation)②继承(Inheritance)③多态(Polymorphism) 面向对象简称OOP( Object Oriented Programming) 面向过程(procedure oriented programm…