佳木斯网站建设哪家好,深圳做微信网站公司,淘宝网站如何做虚拟机,图片字体转wordpressPHP面向对象01#xff1a;面向对象基础一、关键字说明二、技术实现1. 定义类2. 类成员三、 访问修饰限定符1. public2. protected3. private4. 空修饰限定符四、类内部对象五、构造和析构1. 构造方法2. 析构方法六、范围解析操作符1. 访问类常量2. 静态成员3. self关键字七、类…
PHP面向对象01面向对象基础一、关键字说明二、技术实现1. 定义类2. 类成员三、 访问修饰限定符1. public2. protected3. private4. 空修饰限定符四、类内部对象五、构造和析构1. 构造方法2. 析构方法六、范围解析操作符1. 访问类常量2. 静态成员3. self关键字七、类的加载1. 手动加载2. 自动加载八、对象克隆一、关键字说明
class类。object对象也称实例。new实例化。member类成员。method方法也称成员方法。property属性也称成员变量。constant类常量。
二、技术实现
1. 定义类
定义类基本语法class 类名 {}
?php
# 定义类
class Nothing {}
# 实例化对象
$nothing new Nothing;var_dump($nothing);数据类型为对象对象属于Nothing类编号为1当前对象里面有0个属性。
2. 类成员
指直接定义在类结构内部的以及成员即直接依赖{}的成员。分为三种成员变量、成员方法、类常量。 成员变量 需要在变量名字前使用关键字 public。语法public 变量名 [值]; class Nothing {public $a;public $b 1;
}访问方式$对象名-属性名; # 实例化对象
$nothing new Nothing;# 增
$nothing-c 20;
# 删
unset($nothing-a);
# 改
$nothing-b -1;
# 查
echo $nothing-b;成员方法 在类结构{}下定义的函数。 class Salar {public function display() {echo __CLASS__;}
}成员方法访问$对象名-方法名(); $s new Salar();
$s-display();类常量 定义方式const 常量名 值; class Saler {const PI 3.14;
}类常量不能由对象来进行访问。
三、 访问修饰限定符
用来控制属性或方法的访问位置。分为三种public、protected、private。多使用private少使用public。
1. public
表示公有所修饰的内容可以在任何地方都可访问。
2. protected
受保护只能在当前类和相关类的内部访问。 3. private
私有只能在当前类的内部访问。
4. 空修饰限定符
只有方法可以省略修饰限定符默认为public。不建议省略。
四、类内部对象
$this是内置对象代表的是对象。$this不受修饰限定符影响。
五、构造和析构
1. 构造方法
构造方法__construct()是一种类结构特有的特殊方法实例化对象时对象自动调用。
class Person{public function __construct() {echo __CLASS__;}
}初始化属性
2. 析构方法
析构方法__destruct在对象被销毁时会自动调用。使用析构方法的情况 保存对象的变量被用来保存其他数据导致对象内存没有任何变量引用。删除对象变量。脚本执行结束释放所有变量。
?php
class Saler{public function __destruct(){echo __FUNCTION__;}
}$saler new Saler();
unset($saler);六、范围解析操作符
由两个冒号组成::可以实现类直接访问类成员。格式类名::类成员如果需要有一些自身的数据和操作类常量、静态成员由类来访问。属性和方法由对象访问。
1. 访问类常量
class Saler {const PI 3.14;
}
echo Saler::PI;2. 静态成员
静态成员是由static关键字修饰的类成员表示该成员属于类访问。不建议使用对象访问带 static 的静态成员。多用静态少用非静态。静态属性?php
class Person{public $money 0;public static $count 0;
}$person new Person();
// 访问成员属性
echo $person-money;
echo br;
// 访问静态属性
echo Person::$count;静态方法:?php
class Person{public static $count 0;public static function showCount() {echo Person::$count, __FUNCTION__;}
}
Person::showCount();3. self关键字
静态成员中不能使用 $this只能使用 selfself关键字在类的内部使用用于代替类名。
?php
class Person{private static $count 0;public static function showClass() {echo Person::$count;echo self::$count; // self代替类名}
}
Person::showClass(); 当构造方法被私有化就没法在类外部实例化对象此时可以在类内部进行对象实例化。
?php
class Person{private function __construct() { }public static function getInstance() {return new self();}
}$person Person::getInstance();七、类的加载
1. 手动加载
即要访问某个类之前使用文件包含将类所在的文件加载进来加载类文件比较消耗资源所以事先用class_exists()来判断是否存在。
?php
if (!class_exists(Saler)) {include_once Saler.php;
}
$saler new Saler();2. 自动加载
自动加载是PHP提供的一种加载机制。php7以前实现定义一个函数__autoload()然后当系统需要实用类而内存中不存在的时候系统会自动调用__autoload()来加载类文件。php7以后自动加载通过 spl_autoload_register() 实现?php
class Autoload{function c_autoload($class) {$c_file c/ . $class . .php;if (file_exists($c_file)) require_once $c_file;}function d_autoload($class) {$c_file d/ . $class . .php;if (file_exists($c_file)) require_once $c_file;}
}spl_autoload_register(array(Autoload, c_autoload));
spl_autoload_register(array(Autoload, d_autoload));$saler new Saler();八、对象克隆
clone可以克隆对象通过已有的对象复制一个新的同样的对象两个对象不是同一个内存地址。
?php
class Son{public $name;private $money 0;
}$son new Son();
$son_clone clone $son;在对象被克隆时新对象会自动调用__clone()方法。
class Son{public $name;private $money 0;public function __clone() {var_dump($this);}
}如果不允许在外部克隆对象将__clone()私有化。