Blogger Information
Blog 40
fans 0
comment 0
visits 16030
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
类与对象、oop封装性、构造器 . 魔术方法的应用:属性重载与方法重载 , 类的原生自动加载,类的继承与功能扩展
飞天001
Original
443 people have browsed it

类与对象、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. }
Correcting teacher:PHPzPHPz

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post