实例
/**
* 类的声明与实例化
* */
//用关键字class声明一个类
class Demo1
{
}
//用关键字new实例化一个类
$demo1=new Demo1();
//给当前对象添加一些属性和方法
$demo1->name='小王';
$demo1->sex='男';
$demo1->hello=function (){
return '我说一个自定义的类方法';
};
//使用对象符:->来访问对象中的成员(属性和方法)
echo $demo1->name,':',$demo1->sex,'
';
//正确的调用方式,对象方法应该以回调的方式运行
echo call_user_func($demo1->hello);
运行实例 »
点击 "运行实例" 按钮查看在线实例
实例
/**
* 类常量,对象初始化,属性的重载
* 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 '
';
echo '子类调用';
$show=new show('小米','55');
echo '姓名:',$show->name='小红'.'
';
echo '性别:',$show->sex='女';
echo '
'. '子类调用父类方法','
';
//子类调用父类方法
echo $show->showResult();
运行实例 »
点击 "运行实例" 按钮查看在线实例
实例
/**
* 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 '
';
//实例化对象,设置默认的值
$result=new lianxi1('小明','20');
//var_dump($result);
//访问属性,因为属性全部被封装,所以必须通过一个统一的外部接口访问
echo $result->show();
echo '
';
//通过创建获取属性的重载方法,从而获取变量的值
echo '通过创建获取属性重载读取私有变量:年龄',$result->age;
echo '
';
echo '通过创建获取属性重载读取私有变量:性别',$result->sex;
echo '
';
//通过设置属性的重载方法,从而改变变量的值
echo '通过设置属性重载方法改变私有变量:年龄',$result->age=33;
echo '
';
//通过设置属性的重载方法,从而改变变量的值
echo '通过设置属性重载方法改变私有变量:年龄',$result->sex='女';
echo '
';
echo '改变年龄和性别值后:',$result->show();
echo '
';
echo '检测变量是否存在:';
echo isset($result->name) ? '存在
' : '不存在
';
echo '
';
echo '删除变量后显示:';
unset($result->name);
unset($result->age);
unset($result->sex);
echo '改变年龄和性别值后:',$result->show();
运行实例 »
点击 "运行实例" 按钮查看在线实例
实例
/**
*类中静态成员的声明与访问
*/
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();
运行实例 »
点击 "运行实例" 按钮查看在线实例