<?php
class Ren
{ const p=3.1415926; //将某些类里边常用的东西定义为常量
public static $class;//static 关键字是定义静态成员
public $name;
private $sex;
private $age;
function __construct($s)
{
$this->sex = $s;
}
public function Say()
{
echo "hello";
echo self::$class;//普通方法里边可以调用静态成员
echo self::p+3;
}
const a=1;
function SetAge($a) //给age赋值的函数
{
if($a>10 && $a<50)
{
$this->age = $a;
}
}
function GetAge() //取age的值
{
return $this->age;
}
function __set($name,$value) //对类里面的私有成员进行赋值的魔术方法
{
if($name == "age")
{
if($value>20 && $value<50)
{
$this->$name = $value;
}
}
else
{
$this->$name = $value;
}
}
function __get($name) //对类里面的私有成员进行取值的魔术方法
{
return $this->$name;
}
static function Test()
{ echo self::$class; //调用自身类里面的静态成员
echo "静态方法";
}
}
$p=new Ren("男");
Ren::$class="0305";//访问静态成员用::
//echo Ren::$class;
//Ren::Test();
echo Ren::p+4;//php5.3以上的版本在类外边也可以用const;
php中定义常量是define($name,$value),define()是方法;
const只是用来定义常量,所以运行起来比define()要快
$p->Say();//调用say(),显示结果为:hello03056.1415926
echo Ren::a;
//继承 如果要继承,肯定有子类出现
//继承概念:如果一个类有子类,那么该子类会继承父类的一切东西(私有成员访问不到)
//在定义子类时需要加一个关键字:extends
//特点:单继承,一个子类只能有一个父类
//如果父类中有构造函数,子类在实例化的时候要按照父类构造函数的标准来实例化
//子类对父类方法的重写:在子类中写一个同样的方法,覆盖父类的方法
//final:用来修饰类,写在类前边,代表该类是一个最终类,该类无法继承
class Test extends Ren
{
public $birthday;
function Run()
{
echo "run";
}
function Say()
{ parent::Say();//调用父类的Say()方法,parent()只能在子类中使用
echo "Test Say";
}
}
$t=new Test("男");
$t->name="simon";
echo $t->name."<br />";
$t->Say();
var_dump($t);
$t->Run();
//静态成员
//类里面普通成员是属于对象的,不是属于类的(调用的时候是用对象来调用的)
//什么叫做静态的:类静态的成员是属于类的,不是属于每个对象的
//定义静态成员用static关键字修饰
//静态方法里边不能调用普通成员,可以调用静态成员
//静态方法可以调用静态成员,使用self关键字来调用
//普通方法可以调用静态成员
//self代表该类,$this代表该对象
?>