Blogger Information
Blog 20
fans 0
comment 1
visits 14921
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
类声明,类属性重载,类的继承,以及类的中常量属性与静态成员的访问2018/9/03
南风的博客
Original
625 people have browsed it

实例

<?php
/**
 * 类的声明与实例化
 * */

//用关键字class声明一个类
class Demo1
{

}

//用关键字new实例化一个类
$demo1=new Demo1();

//给当前对象添加一些属性和方法
$demo1->name='小王';
$demo1->sex='男';
$demo1->hello=function (){
    return '我说一个自定义的类方法';
};
//使用对象符:->来访问对象中的成员(属性和方法)
echo $demo1->name,':',$demo1->sex,'<br>';
//正确的调用方式,对象方法应该以回调的方式运行
echo call_user_func($demo1->hello);

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

<?php
/**
 * 类常量,对象初始化,属性的重载
 * 1. 类常量可用来创建对象之间的共享数据
 * 2. 对象初始化: 用构造方法实现,创建对象之前会自动调用,完全对象的一些初始化工作
 * 3.属性重载:在类的外部访问不存在或者无权限访问的属性时,会自动触发此类方法调用
 *  属性重载涉及四个方法:__get(),__set(),__isset(),__unset()
 */
//父类
class test
{
    //属性常量
    const PAGE_NAME='WELCOME TO HANGZHOU';
    private  $name;
    private  $age;

    public  function  __construct($name,$age)
    {
        $this->name=$name;
        $this->age=$age;
    }
    public function __get($name)
    {
        return $this->name;
    }
    public  function  __set($name, $value)
    {
        // TODO: Implement __set() method.

        return $this->$name=$value;
    }
    public function  showResult()
    {
        return '我爱你,中国!';
    }

}
class  show extends  test{

    private  $sex;
//    子类构造函数
    function  __construct($name, $age,$sex='男')
    {
        //父类的构造方法
        parent::__construct($name, $age);
        $this->sex=$sex;
    }
}
echo  '父类类调用';
$result=new test('小红',12);
//方法重载设置值
$result->name='小军';
echo  $result->name;
echo  '<hr>';

echo  '子类调用';

$show=new show('小米','55');

echo   '姓名:',$show->name='小红'.'<br>';
echo  '性别:',$show->sex='女';

echo '<br>'. '子类调用父类方法','<br>';
//子类调用父类方法

echo $show->showResult();

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

<?php
/**
 * 3,类常量与类属性的重载
 */

class lianxi1{

    //定义一个常量变量
    const  TITTLE_NAME='WELCOME TO MY HOME!';
    //定义三个变量,分别访问范围府为public private ,protected
    public  $name;
    private  $age;
    protected  $sex;

    //构造函数,类加载的时候进行初始化变量和方法
    public  function  __construct($name,$age,$sex='男')
    {
        $this->name=$name;
        $this->age=$age;
        $this->sex=$sex;
        $this->show();
    }
    function  show()
    {
        return  '姓名:'.$this->name.'年龄:'.$this->age.'性别:'.$this->sex;
    }
    //获取属性重载方法
    public function  __get($name)
    {
        return $this->$name;
    }
    //设置属性重载方法
    public  function  __set($name, $value)
    {
        // TODO: Implement __set() method.
        return $this->$name=$value;
    }
    // 检测属性重载方法
    public  function  __isset($name)
    {
        return isset($name)?$name:'没有访问权限';
    }
    //删除属性重载方法
    public  function  __unset($name)
    {
        if ($name='name')
        {
            unset($this->$name);
        }
        else
        {
            return false;
        }
    }

}

//调用常量方法
echo '输出常量变量:',lianxi1::TITTLE_NAME;
echo  '<hr>';
//实例化对象,设置默认的值
$result=new lianxi1('小明','20');
//var_dump($result);

//访问属性,因为属性全部被封装,所以必须通过一个统一的外部接口访问
echo  $result->show();

echo  '<hr>';
//通过创建获取属性的重载方法,从而获取变量的值
echo  '通过创建获取属性重载读取私有变量:年龄',$result->age;
echo  '<hr>';
echo  '通过创建获取属性重载读取私有变量:性别',$result->sex;
echo  '<hr>';
//通过设置属性的重载方法,从而改变变量的值
echo  '通过设置属性重载方法改变私有变量:年龄',$result->age=33;
echo  '<hr>';
//通过设置属性的重载方法,从而改变变量的值
echo  '通过设置属性重载方法改变私有变量:年龄',$result->sex='女';
echo  '<hr>';
echo  '改变年龄和性别值后:',$result->show();
echo  '<hr>';

echo  '检测变量是否存在:';
echo isset($result->name) ? '存在<br>' : '<span style="color:red">不存在</span><br>';
echo  '<hr>';

echo  '删除变量后显示:';

 unset($result->name);
unset($result->age);
unset($result->sex);
echo  '改变年龄和性别值后:',$result->show();

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

<?php
/**
 *类中静态成员的声明与访问
 */
class  test1
{
    //定义静态成员变量
    private static  $name;
    private  static $age;
    private  static  $sex;
    public static function  show()
    {
        echo '我叫:',self::$name,'今年:',self::$age,'岁,性别是',self::$sex;
    }
    public  function  __get($name)
    {
        return $name;
    }
    function  __construct($name,$age,$sex)
    {
        self::$name=$name;
        self::$age=$age;
        self::$sex=$sex;
    }
}
$a=new test1('小米','25','男');
echo test1::show();

运行实例 »

点击 "运行实例" 按钮查看在线实例


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