-
面向对象编程 可使项目模块化
重用性:设计的每一个模块都可在项目中重复使用
灵活性:每一个模块都可以很轻松地被替换
扩展性:在现有的模块上添加新功能
面向对象:项目由一个个对象组建而成,每个对象都是独立的,他们各司其职,最后像搭积木一样,将各种组合起来,就实现了一个项目。
查看全部 -
魔术方法:
__set 有两个参数 __set(属性名,属性值) 修改私有属性
__get 有一个参数 __get(属性名) 查看私有属性
__isset 有一个参数 __isset(判断的属性名) 用于检测私有属性是否存在
__unset 有一个参数 __isset(删除的属性名) 用于删除私有属性
__call 有两个参数 __call(函数名,函数值) 如果class内没有这个函数,则执行这个[不会因为没有函数方法报错]
__callStatic 有两个参数 __call(函数名,函数值) 【静态static】如果class内没有这个函数,则执行这个[不会因为没有函数方法报错]
__invoke 当类被当作函数使用 就会自动调用这个魔术方法
__toStrgin 如果打印对象变量方法的话,会自动调用 当作字符串输出
查看全部 -
单例模式: 每个类只能被实例化一次。因为每实例化就会占用内存空间,这样可以节省空间 注意: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 主要解决:一个全局使用的类频繁地创建与销毁。 何时使用:当您想控制实例数目,节省系统资源的时候。 工厂模式: 意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。 主要解决:主要解决接口选择的问题。 何时使用:我们明确地计划不同条件下创建不同实例时。 如何解决:让其子类实现工厂接口,返回的也是一个抽象的产品。 关键代码:创建过程在其子类执行。查看全部
-
在php中继承的特点是只支持单继承,即一个子类只能继承一个父类, 去获得父类中的方法。但从php5.4开始有trait概念,一个类可以通过use关键字引入多个trait的方法,用trait解决了单继承的问题。
查看全部 -
在实例化一个对象的时候,通常需要初始化。 对象被销毁的时候,需要有回收。所以就用到了类里面的两个内置的方法:构造方法和析构方法。
构造方法:
<?php class Computer{ public function __construct() //内置的构造方法,不用调用直接就会执行 { echo "cpu就绪。。"; echo "主板就绪。。"; echo "内存就绪。。"; } public function game() { echo "---玩游戏---"; } } $computer = new Computer(); $computer->game(); //结果为:cpu就绪。。主板就绪。。内存就绪。。---玩游戏---
<?php class Computer{ public function __construct($high = 0) { if($high){ echo "高配的cpu就绪。。"; echo "高配的主板就绪。。"; echo "高配的内存就绪。。"; }else{ echo "cpu就绪。。"; echo "主板就绪。。"; echo "内存就绪。。"; } } public function game() { echo "---玩游戏---"; } } $computer = new Computer(1); // 1这个参数就是构造方法的参数 $computer->game(); //结果为:高配的cpu就绪。。高配的主板就绪。。高配的内存就绪。。---玩游戏---
析构方法:
<?php class Computer{ public function game() { echo "---玩游戏---"; } public function __destruct() //是析构方法,直接可执行 { echo "关闭电源。。。"; } } $computer = new Computer(); $computer->game(); //结果为:---玩游戏---关闭电源。。。 //还可以这样 手动释放对象变量 unset($computer); echo "good job"; //结果为:---玩游戏---关闭电源。。。good job
类常量:
<?php class Computer { const YES = ture; //const关键字定义类常量,类常量一般是大写字母和下划线组成 const NO = false; const ONE = 1; const TWO = self::ONE + 1; //在类里用self调用类里的常量 const THREE = self::TWO + 1; } var_dump(Computer::THREE); //在类外面可直接调用类里的常量,结果为:int(3)
查看全部 -
对象是类的实例,先有类,才有对象。就像配置单和电脑的关系。
类是一个代码模板
//定义一个类 <?php //类名以字母或下划线开头,后面可跟字母、数字、下划线。 class Computer { //类名一般开头的字母大写,为了清晰。当然也可以用小写。 } $computer = new Computer(); //这个对象赋给了这个变量,这个对象叫做Computer类的一个实例。 var_dump($computer); //打印出:object(Computer)#1(0){}
<?php class Computer { public $cpu = 'amd 5000'; //属性 public $mainboard = '华硕9000x'; //属性 private $hd = 1024; //属性 public function game($gameName='') //方法 { echo $this->hd; //要在类里面调用属性,就用this 可以理解为这个类的一个实例(对象) } //打印出:1024 public function job($work='写代码') //方法 { echo ($this->game()); } } $computer = new Computer(); var_dump($computer); //打印出所有的属性:object(Computer)#1 (3) { ["cpu"]=> string(8) "amd 5000"["mainboard"]=> string(11) "华硕9000x" ["hd":"Computer" :private]=>int(1024)} var_dump($computer->cpu); //调用属性 打印出:string(8)"amd 5000" var_dump($computer->hd); //是私有的,不能给外部对象调用 打印出错 ,只能在类的内部使用。 ?> <?php class Computer { public $cpu = 'amd 5000'; //属性 public $mainboard = '华硕9000x'; //属性 private $hd = 512; //属性 public function game($gameName='') //方法 { if($this->getHdSize() < 1024){ echo "硬盘太小玩不了游戏"; return false; } return true; } public function job($work='写代码') //方法 { echo ($this->game()); //整个的结果就是打印出:硬盘太小玩不了游戏 } public function getHdSize() //方法 { return $this->hd; //获取硬盘大小 } } $computer = new Computer();
查看全部 -
1、类常量:const
2、调用类常量:self::
3、$this是对象
4、self是类本身
查看全部 -
有两个下划线“__”表示php内置的函数
查看全部 -
当子类方法与父类同名,子类是会覆盖父类的方法。
当子类没有构造方法时,会去调用父类的构造方法,当子类有自己的构造方法,就会调用自己的构造方法。
查看全部 -
方法与属性使用static定义后则改属性与方法则属于该类的
当在静态的方法中无法通过$this调用非静态的属性因为$this指的是这个类的实例即是对象而static的方法是属于类的而不是对象的。
查看全部 -
抽象类中定义的方法可以实现,也可以不实现。
查看全部 -
对象调用用$this 类调用用self::查看全部
-
重用性,灵活性,扩展性查看全部
-
父类有构造方法 子类没有构造方法 那么当实例化子类时会自动调用父类的构造方法
如果子类自己有构造方法 子类就会调用自己的构造方法 而不会去调用父类的构造方法 若还想调用父类的构造方法 应使用 parent::__construct();
如果在类前面加final关键字 final class Dad{ } 则该类不能被继承
如果在方法前面加 final关键字 则 此方法 在子类中 不能被重写
查看全部 -
php自动加载方法 spl_autoload_register('外部方法名') spl_autoload_register(function($className){ require $className.'.php'; }) spl_autoload_register([new 类名,'类名里的方法'])查看全部
举报