<?php
//人的类
class Ren{
//final class Ren{ //final 关键字,子类不能继承
//成员属性
public $xingming; //公有成员 类中类外都可以访问
var $xingbie;
var $nianling;
var $zhiye;
private $baomi; //私有成员 本类可以访问,子类和类外都不可以访问
protected $shoubaohu; //受保护的成员
static $jingtai; //静态成员属性//构造方法
function __construct($xingming=””,$xingbie=””,$nianling=””,$zhiye=””){
$this->xingming=$xingming;
$this->xingbie=$xingbie;
$this->nianling=$nianling;
$this->zhiye=$zhiye;
$this->baomi=$baomi;
self::$jingtai++;
}//成员方法
function chengyufangfa(){
//final function chengyufangfa(){ final关键字的成员方法 子类不能被重载
echo “<br>”;
//类中成员属性的访问
echo $this->xingbie=”女”;
echo “<br>”;
echo “这是一个成员方法”;
echo “<br>”;
//类中私有成员可以访问私有属性
echo “这是一个私有成员的类中访问”;
}//成员方法访问类中的私有成员
function getprivate(){
echo $this->baomi=”通过成员方法,访问类中的私有成员”;
}
//访问类中的静态成员
function getsta(){
self::$jingtai;
}
//访问类中的静态成员的静态成员方法
static function getstaf(){
return self::$jingtai;
}//====魔术方法====
//__set()
function __set($prname,$prvalue){
//对设置私有成员的值进行过滤;
if($prvalue == “国安局” || $prvalue == “特种部队”){
echo “<br>”;
echo “无法设置私有成员-私有成员因为是国安局或特种部队”;
return;
}
}//__get()
function __get($prname){
echo “<br>”;
//对获取的私有成员进行过滤}
//__unste()
function __unste($prname){
//对私有成员进行删除}
//__isset()
function __isset($prname){
//对外部isset() 进行判断检测的私有成员。设用这个魔术方法
}
//__tostring()
function __tostring(){
echo “<br>”;
return “这是输出的对象字符串”;
}
//__debugInfo 这是一个var_dump($object)后输出的内容
function __debugInfo(){
echo “<br>”;
echo “这是一个var_dump($object)后输出的内容”;
}
//__call 调用对象不存在的方法输出
// function __call(){
// echo “<br>”;
// echo “调用对象不存在输出的内容”;
// }//析构方法
function __destruct(){
echo “<br>”;
echo “这个类已经结束”;
}}
//==== 类的继承 ====
//外星人子类–继承人的父类
class Waixingren extends Ren{
function wgaosuni(){
echo “我是外星人”;
}
}
//太阳系人子类–继承人的父类
class Taiyangxiren extends Ren{
function tgaosuni(){
echo “我是太阳系人”;
}
}//土星人–继承人的父类
class Txingren extends Ren{
private $shenmi;
//重载父类的构造方法
function __construct($xingming=””,$xingbie=””,$nianling=””,$zhiye=””){
$this->xingming=$xingming;
$this->xingbie=$xingbie;
$this->nianling=$nianling;
$this->zhiye=$zhiye;
$this->baomi=$baomi;
}
//土星人的成员方法
function Tshuo(){
echo “我是土星人”;
}
}Ren::$jingtai=0;
//实例化对象
$zhongguoren = new Ren();
$zhongguoren1 = new Ren();
$zhongguoren2 = new Ren();
$zhongguoren3 = new Ren();$zhongguoren->chengyufangfa();
//实例化子类对象 可以传实参,也可以不传实参
$wobject = new Waixingren($xingming=””,$xingbie=””,$nianling=””,$zhiye=””);
//$wobject = new Waixingren();
echo “<br>”;
//子类访问父类中的成员方法
$wobject->getprivate();//对象中成员的访问
echo “<br>”;
echo $zhongguoren->xingming=”这是对象中成员属性的访问”;//对象中私有成员无法访问(报错)可以通过成员方法访问类中的私有属性
//echo “<br>”;
//echo $zhongguoren->baomi=”这是一个保密”;//成员方法访问类中的私有成员
echo “<br>”;
$zhongguoren->getprivate();//====魔术方法==== 私有成员的访问 __set()
$zhongguoren->baomi=”国安局”;echo “<br>”;
//访问 类中的静态成员的访问方法 每创建一个对象自动增加1
echo $zhongguoren->getstaf();
echo “<br>”;
//也可以通过对象访问静态成员方法
echo Ren::getstaf();//访问 类中的静态成员的静态成员方法
//$zhongguoren::getstaf();//克隆对象
$zhongguoren5 = clone $zhongguoren;//对象字符串
echo $zhongguoren;//__debugInfo() var_dump($object) 后的输出内容
var_dump($zhongguoren);//__call 调用对象不存在的方法输出
//$zhongguoren->zhiye();