魔术方法

#1.
__get:获取私有属性值的时候调用

__set:设置私有属性值的时候调用
__construct:构造方法
__destruct:析构方法
__unset
触发时机:当销毁一个私有成员属性的时候调用
参数:属性名
__isset
触发时机:当判断一个私有成员属性是否被设置过时调用
参数:属性名
__invoke(了解)
触发时机:当将一个对象当作函数使用的时候被调用
参数:任意多个,调用时传递多少个这里就写多少个
__toString(了解)
触发时机:当echo一个对象的时候调用
参数:没有参数
返回值:返回一个字符串,该字符串就会被打印出来,这个字符串需要自己定制
__debugInfo(了解)
触发时机:当var_dump来打印这个对象的时候调用
参数:没有参数
返回值:返回一个自定义的数组,你想打印什么就打什么
__call
触发时机:当调用一个不存在的成员方法的时候触发
参数:方法名 参数数组
__callStatic(讲完静态方法时候再讲)
$this->成员属性:在类里面访问自己的成员属性和方法。

public:公共的,在类内和类外都可以直接访问

private:私有的一般在类外不能访问。

#2.魔术方法:
(1)__unset():用unset销毁一个私有的成员属性的时候调用,参数:属性名。

//<?php
  class Cat
  {
    public $nmae;
    private $age;
    private $height;
  
  public function __construct($name,$age,$height)
    {
      $this->name = $name;
        $this->age = $age;
        $this->height = $height;
    }
  
  public function miao()
    {
      echo 'miaomiao';
    }
  public function __unset($arg)
    {
      echo $this->$arg.'被销毁了';
    }
  }
$bosi = new Cat('波斯猫',10,20);
unset($bosi->age);

(2)__isset():当判断一个私有的成员属性是否被设置时调用,参数:属性名。

<?php
 class Cat
 {
 .......
   public function __isset($arg)
     {
       return isset($this->$arg);
     }
 }
...isset($bosi->age);

(3)__invoke:当将一个对象当做函数时被调用,参数任意多个,调用时传递多少个这里就写多少个。

<?php
 class Dog
 {
   public $name = 'wang';
 
 public function wangwang()
   {
     echo '旺旺';
   }
 public function __invoke($a,$b,$c)
   {
     echo '将对象作为函数使用了';
   }
 }
$tai = new Dog();
$tai(100,200,300);

(4)__toString:当echo一个对象的时候调用,这个函数里面返回什么字符串echo的时候就打印出什么。没有参数,但是有返回值,返回一个字符串,该字符串需要自己定制。

<?php
 class Dog
 {
   ......
     public function __toString()
     {
     return '我的姓名是'.$this->name;
   }
 }
$tai = new Dog();
echo $tai;

(5)__debugInfo():触发时机:当使用var_dump()打印对象的时候会调用。返回一个自定义的数组,数组里面是需要打印的东西,没有参数。

<?php
 class Dog
 {
   ......
     public function __debugInfo()
     {
       return ['name','age'];
     }
 }
$tai = new Dog();
var_dump($tai);

(6)__call():调用不存在的成员方法时会自动调用该方法。参数:方法名,参数数组。

<?php
 class Dog
{
   .......
   function __call($name,$args)
   {
     var_dump($name);//函数名
     var_dump($args);
   }
}
$tai =  new Dog();
$tai->eat(100,100);

(7)__callStatic():调用不存在的静态方法时

3.连贯操作(链式操作):
数据库操作类查询的时候有很多条件:

$model->limit()->where()->filed()->table()->select()

<?php
 class Model
 {
   function filed()
     {
       return $this;
     }
 function limit()
   {
       return $this;
   }
    ....
   function select()
   {
     //返回查询结果。
   }
 }

4.通过__call实现单字段的查询:

<?php
 function __call($name,$args)
 {
   $str = substr($name,0,5);
   if($str == 'getBy'){
     $filed = 
   }
 }
未完待续

5.继承:
(1)继承:考虑的是从相同的属性来理解,子类的特征一般多于父类。

派生:其实和继承描述的是同一个东西,但是从两个不同的方面来理解的,继承考虑的是相同的属性来考虑的,派生是从不同的属性来理解的。

父子类的叫法:父类(基类)、子类(派生类)

单继承:php是单继承的,子类只能有一个父类。

(2)继承的基本语法:

​ 在代码中子类如果继承父类,那么就拥有父类的属性和行为(某些访问控制除外)。

<?php
  class Father
  {
    public $name = '翠花';
    public $age = 18;
    public $height = 160;
  
  function eat()
    {
      echo '大口吃饭';
    }
  function sleep2()
    {
      echo '睡觉觉';
    }
  
  }
class Son extends Father
  {
    
  }
$hua  = new Son();
$hua->sleep2();

6.访问权限:
public:公共的,类外类内都可以直接访问

private:私有的,类外不可以直接访问

protected:受保护的,类外不可直接访问,类内可以

<?php
 class Girl
 {
   public $name = '刘亦菲';
   private $age = 18;//私有的不能被继承
   protected $weight = 90;//可以被继承
 
 function say()
   {
     echo '我叫'.$this->name;
   
   }

 }
class daughter extends Girl
 {
   function test()
     {
        echo '我叫'.$this->name;
     }
 }
$liu = new daughter();
$liu->test();

7.静态属性和静态方法
静态属性是属于整个类的,而不是属于某个对象的

静态方法的调用

​ 注意事项:(1)静态方法中不能出现$this关键字,

​ $this是属于某个对象的,但是该静态方法是属于整个类的而不是属于某个对象的。

​ (2)静态属性和方法前面可以加属性修饰符。

​ (3)使用静态属性和方法可以提高效率,通过类名就可以使用里面的属性和方法。

​ (4)可以实现单例(单一实例)
类外调用—》类名::静态方法名();
类内调用—》$this::方法名();

8.自动加载
规则:一个类就是一个文件,文件名要和类名相同。

__autoload:当在当前脚本中去加载一个不存在的类的时候会调用这个方法。

当加载一个类,这个类继承了其他的类,只要找不到就可以调用__autoload(),参数就是要加载的类名。

M:model 模型 和数据库打交道

V:View 视图,html文件(模板)

C:controller控制器(数据和模板之间的桥梁)

注意:这个方法是唯一的一个写在类外的方法。

//<?php
  class Car
  {
    public $name;
    public $money;
    public $speed;
  
  function run()
    {
    echo '汽车在高速上面跑';
​
    }
  
  }
<?php
  function __autoload($name)//$name就是类名
  {
    echo '我被调用了';
  $fileName = $name.'.php';
  include $fileName;
  }
    //include 'Car.php';

自动加载
$bmw = new Car();
$bmw->run();
目录结构(文件夹)结构:

model存放数据库文件

view存放界面视图文件

controller存放控制器文件

vendor:第三方的库文件

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值