一、静态属性和静态方法
1.概述
(1)static关键字修饰的属性,就是静态属性
(2)static关键字修饰的方法,就是静态方法
(3)静态属性或方法就是类的属性或方法,与类相关,与对象无关。
(4)类的东西[类常量、静态属性、静态方法],通过"类名::"来调用
(5)好处:节省内存。例如:创建了100个对象,而静态属性只有一份。
(6)静态属性和类常量的区别:类常量在一次HTTP请求过程中值永远不变,但是静态属性可以改变。
(7)静态属性和静态方法都可以加权限修饰符,而类常量没有权限。
(8)举例
class Student
{
//私有的保存人数的静态属性(所有对象共享)
private static $count = 60;
//公共的静态方法
public static function showInfo()
{
$str = "当前文件名:".__FILE__;
$str .= "<br>当前函数名:".__FUNCTION__;
$str .= "<br>当前方法名:".__METHOD__;
// $str .= "<br>当前班级人数:".Student::$count;
$str .= "<br>当前班级人数:".self::$count;
echo $str;
}
}
//在类外访问公共的静态方法
//访问类的内容(类常量,静态属性,静态方法),不需要创建对象,直接访问
Student::showInfo();
$obj = new Student;
echo "<br><br>";
$obj -> showInfo();
效果图如下:
二、单例设计模式
(1)什么是单例设计模式?
单例设计模式是指一个类只有一个对象实例。这样做的好处,可以防止频繁创建对象而造成资源浪费。
(2)单例设计模式的要求(三私一共)
a.一私:私有的静态的保存对象的属性
b.二私:私有的构造方法,阻止类外new对象
c.三私:私有的克隆方法,阻止类外clone
d.一公:公共的静态的创建对象的方法
核心代码
三、对象之间的赋值与克隆
(1)对象之间的赋值,实际就是引用赋值,两个对象之间赋值后,就是一个对象了。所以当一个对象的内容发生变化后,另一个对象的内容也会发生变化。
(2)普通变量之间的赋值,如果也想使用引用赋值,必须使用&。
(3)克隆关键字clone ,克隆后的对象,不会受原对象的影响。
结果:
四、命名空间
(1)什么是命名空间:命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误。
(2)命名空间通过关键字 namespace 来声明, 如果一个文件中包含命名空间,它必须在其它所有代码之前声明命名空间。
(3)要想使用命名空间中的类,必须要引入这个类,如:use phpoop\Db
五、魔术方法之类的自动加载
(1)魔术方法的定义:PHP中把以两个下划线__开头的方法称为魔术方法
(2)__autoload函数 :主要的功能就是构造需要加载的类文件的路径,然后包括包含类文件。这一切都是当程序找不到类文件时自动执行的。
(3)spl_autoload_register() 提供了一种更加灵活的方式来实现类的自动加载
核心代码