1、什么是封装?

隐藏对象字段和实现细节,仅通过对外接口,控制在程序中字段的读取和访问级别 ,将抽象的行为和数据相结合,形成一个有机的整体。

2、字段的作用域#

<?php
classs Conputer{
//public  公共的,内外可以访问
//private 私有的,类内可以访问
//protected  受保护的,类内和子类可以访问
//类内指的是{}之间的部分
}
?>

3、instanceof关键字

确定一个对象是否是一个类的实例,一个类的子类的实例,或者实现了一个接口

4、拦截器

可以做成私有的,也可以设置静态方法,和普通字段设置一样,

5、常量;

<?php
class Computer{
const PI=3.14;
}
?>

6、静态字段和方法

1、总结:静态方法只能访问静态的,或者常量,用self关键字;

<?php
//类名一般第一个字母大小
class Computer{
    
    const PI=3.1415926;//常量,在该类所有的实例化对象的生命周期内,值不变,约定俗成 常量名称大写
    
    public static $_count=0;  //静态类字段
    
    private $_name='联想'; //我是公共字段,内外可以访问,初始化不可以赋值变量,如 $_name=time();错误
    
    private $_cpu; //我是私有字段,类内可以访问
    
    protected $_zb; //我是受保护的字段,子类和类内可以访问
    
    public function _run(){
        //类内访问字段:  $this->字段名称
       $this->_cpu='I5';
    }
    
    //静态方法可以通过类—>方法名称访问,也可以通过 类名称::方法名称访问
    //静态方法,不可以访问非静态字段,非静态方法,通过$this也无法访问,因为不在对象中
    //静态方法,可以访问静态字段,静态方法,
    //静态方法内部,不可使用$this关键字
    //静态只能访问静态 ,或者常量,
    public static function _run2(){
       echo self::$_count;
       //self::_run(); 错误
       //self::_name; 错误
       self::PI;
    }
    
    //普通方法可以访问静态方法,因为,静态方法是为了对所有实例共享的
    public function _run3(){
        self::_run2();
    }
    
    
    //拦截器
    //变量有用
    private function __set($varname,$varvalue){
        $this->$varname=$varvalue;
    }
    
    private function __get($varname){
        return $this->$varname;
    }
}

//实例化一个类
$computer=new Computer();
$computer1=new Computer();
Computer::_run2();
echo '<br>';
$computer->_run2();
echo '<br>';
//访问常量
echo Computer::PI;
echo '<br>';
//echo Computer::$_count;
//echo $computer->_count;  无法访问
//echo $computer->PI;   无法访问

//拦截器 设置变量值
$computer->_name="dell";
echo '<br>';
echo $computer->_name;
echo '<br>';
$computer->_count="dell";
echo '<br>';
echo $computer->_count;
echo '<br>';
echo Computer::$_count;

//instanceof 关键字 确定某个对象是否是一个类的实例。一个类的子类,或者是实现了某个接口,

echo ($computer instanceof Computer);
?>