类与对象、oop封装性、构造器 . 魔术方法的应用

编辑: admin 分类: 电脑知识 发布时间: 2023-06-14 来源:互联网
类与对象、oop封装性、构造器 . 魔术方法的应用:属性重载与方法重载 , 类的原生自动加载,类的继承与功能扩展1.类与对象,oop封装性,构造方法类与对象
  1. //创建类
  2. class User{}
  1. //类的实例化,即创建对象
  2. $mj = new User();
OOP的封装性
  1. //类属性的访问修饰符,实现了类OOP的封装性
  2. public string $name;
  3. private int $salary;
  4. protected int $age;
构造方法
  1. // __construct(){}构造方法
  2. public function __construct($name,$salary,$age){
  3. //$this代表本对象(实例化的对象)
  4. $this->name = $name;
  5. $this->salary = $salary;
  6. $this->age = $age;
  7. }
2. 类的原生自动加载
  1. /**类的自动加载器 */
  2. spl_autoload_register(function ($className) {
  3. // echo $className; //加载的类名称
  4. $classFile = __DIR__ . DS . 'class' . DS . $className . '.php';
  5. if (is_file($classFile) && file_exists($classFile)) require $classFile;
  6. });
3. 属性重载和方法重载属性的重载
  1. // !当访问当前环境下未定义或不可访问的类属性时 ,重载方法__get会被调用。
  2. public function __get($name)
  3. {
  4. return $this->data[$name];
  5. }
  6. // !当给当前环境下未定义或不可访问的类属性赋值时 ,重载方法__set会被调用。
  7. public function __set($name, $value)
  8. {
  9. $this->data[$name] = $value;
  10. }
方法的重载
  1. // !当访问当前环境下未定义或不可访问的类普通方法时 ,重载方法__call会被调用。
  2. public function __call($name, $args)
  3. {
  4. if ($name == 'show') {
  5. return $this->data;
  6. }
  7. if ($name == 'sum') {
  8. // var_dump($args);
  9. return array_sum($args);
  10. }
  11. }
4. 类的继承与功能扩展类的继承
  1. class Son extends Product
  2. {
  3. // 扩展属性
  4. public string $brand;
  5. // override 重写
  6. public function __construct($name, $price, $num, $brand)
  7. {
  8. // parent:: 调用父类成员
  9. parent::__construct($name, $price, $num);
  10. $this->brand = $brand;
  11. }
  12. // 重写show方法
  13. public function show()
  14. {
  15. return <<<SHOW
  16. 1. 品名:$this->name
  17. 2. 价格:$this->price
  18. 3. 数量:$this->num
  19. 4. 品牌:$this->brand
  20. SHOW;
  21. }
  22. }
功能的扩展
  1. // 功能扩展
  2. public function total()
  3. {
  4. return "$this->name,数量为{$this->num},总计" . ($this->price * $this->num) . '元';
  5. }
【本文由:大丰网站制作 http://www.1234xp.com/dafeng.html 复制请保留原URL】