ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 1.构造方法 ~~~ public function __construct($name,$age){ }; ~~~ ## 2.析构方法(使用unset删除时会执行) ~~~ public function __destruct(){ echo '我被删除了'; } ~~~ ## 3.魔术方法 ~~~ public function __get($param){ return $this->$param; } ~~~ >定义一个get魔术方法(用于读取) ~~~ public function __set($param,$value){ if($param == 'age'){ if($value>0){ $this->$param = $value; } } } ~~~ >定义一个set魔术方法(用于写入) ~~~ public function __isset($param){ return isset($this->$param); } ~~~ >定义一个isset魔术方法(用于判断对象中非共有属性是否存在) ~~~ public function __unset($param){ unset($this->$param); } ~~~ >定义一个unset魔术方法(用于销毁一个对象的非共有属性) 判断一个对象中属性是否存在 ~~~ if(isset($object->name)){}; ~~~ 销毁一个对象中私有属性 ~~~ unset($object->name); ~~~ * * * * * ~~~ public function __call($name,$param){ echo '你调用的方法$name不存在'; echo '你本次调用的参数为'; print_r($param); } ~~~ >当一个方法不存在时自动使用此魔术方法 ~~~ public function __autoload($classname){ $str = $classname.'.class.php'; if(file_exists($str)){ require($str); } } ~~~ >自动加载函数 >当实例化一个不存在的类时会自动使用此方法 ## 4.继承一个类 ~~~ class B extends A{} ~~~ ## 5.使用父级函数 ~~~ parent::__construct($name,$age); ~~~ ## 6.静态方法或属性 ~~~ public static $name = ''; public static function index(){} ~~~ ## 7.调用当前类的静态方法 ~~~ self::index(); ~~~ ## 8.修饰符 ~~~ final //不可覆盖或继承 ~~~ ## 9.单例设计 ~~~ class Mysql{ //定义一个静态属性用于判断 static public $link = null; protected function __construct(){ echo '数据库连接成功'; } //定义静态方法 static public function getConnect(){ //判断属性是否为空 if(is_null(self::$link)){ //是为空则赋值当前对象 self::$link = new Mysql; } return self::$link; } } $db = Mysql::getConnect(); $a = clone $db; if($db === $a){ echo 'Y'; }else{ echo 'N'; } ~~~ ## 10.类中的常亮 ~~~ //定义常亮 const CEO = '首席执行官'; //类中使用常亮 self::CEO; //对象中使用常亮 A::CEO; ~~~ ## 11.判断一个变量是否属于一个类 ~~~ if($变量 instanceof A){} ~~~ ## 12.克隆一个对象 ~~~ $s2 = clone $s1; //相当于换了一个名字 ~~~ ## 13.类型约束 ~~~ class A{ public function fun(B $a){ echo 'ok'; } } $b = new B(); $a = new A(); $a->fun($b); ~~~ >规定的参数必须是B类的对象或者子对象 ## 14.抽象类 ~~~ //语法 abstract class A{ //抽象方法 public abstract function func3($name,$age); } //继承一个类完成未完成的方法 class B extends A{ public function func3($name,$age){ } } ~~~ >子类必须完成父类的方法 ## 15.接口 ~~~ //语法 interface A{ //抽象方法 public function fun1(); } //定义一个抽象类 abstract class B implements A{ //这里是中层领导 } //定义一个普通类 class C extends B{ //去完成老大的方法 public function fun1(){ echo "完成后的方法"; } } ~~~ >第二步或第三步之间必须完成方法才可使用(第三步可不写) ## 16.封装_继承_多态 ~~~ //定义一个主要类 class A{ //必须要通过一个接口才可运行 public function running(PCI $pci){ //开启 $pic->start(); //关闭 $pic->stop(); } } //定义PCI接口(这个接口是提供给子抽象类的接口) interface PCI{ //定义开启和关闭的方法 public function start(); public function stop(); } //继承PCI接口制作抽象类 class aaa implements PCI{ public function start(){ echo "启动了"; } public function stop(){ echo "停止了"; } } //创建一个主对象(必须) $m = new A(); //创建一个抽象对象(相当于一个功能) $n = new aaa(); //让$n在$m上运行 $m->running($n); ~~~