PHP的基础语法
Class Father{//final修饰类不能被继承
private $name = 'father'; //private 内部使用 protected 内部的子类使用
public $age = 32;
const COUNT = 1; //定义常量 前面不能有修饰符 不用$符号
public static $id = 1;
//构造方法
function __construct() //__开头的是魔术方法
{
}
//析构方法
public function __destruct()
{
// TODO: Implement __destruct() method.
}
//重载
//__get 访问一个不可访问的属性是触发
function __get($name)
{
// TODO: Implement __get() method.
}
//__set 对一个不可访问的属性赋值时触发
public function __set($name, $value)
{
// TODO: Implement __set() method.
}
//普通方法
protected function active(){
echo 'Im Father';
}
//final定义的不能被重写
final protected function test(){
echo 'NO reset';
}
};
namespace father\son; //定义子命名空间
use \father as father; //use 引入空间或起别名相当于use father
Class Son extends father\Father{
private $name = 'son';
public $age = 18;
public static $id =2;
public $str = 'sss';
//重写
public function active(){
echo $this->age.'
';//this可以调用父类的属性
echo parent::COUNT.'
';//parent可以调用重写的方法、静态方法属性和常量
echo parent::active().'
';//可以以::静态方法调用方式调用常量
echo self::test().'
';//self代表类 this代表this
echo 'Im Son';
}
}
$son = new Son();//限定名称 相当于完全限定名称\father\son\Son();
$son->active();//类外部无法调用protected
$f = new father\Father();
PHP的多态
//定义接口
interface MyInterfaceA{
public function test();//不能加{}
}
interface MyInterfaceB{
public function test();//不能加{}
}
//抽象类 接口和抽象方法不能有访问修饰符
abstract Class AbClassA{
abstract function test(); //抽象类必须有一个抽象方法
}
//类继承接口 //注意必须实现抽象方法
Class ClassA extends AbClassA {
function test()
{
// TODO: Implement test() method.
}
}
//抽象类继承抽象类
abstract Class AClassB extends AbClassA{}
//抽象类实现接口
abstract Class AClassC implements MyInterface {
function test(){}
}
//接口继承 //可以继承多个接口
interface MyInterface extends MyInterfaceA,MyInterfaceB{}