本节内容:
php常见魔术方法
1,__toString
_toString 方法在将一个对象转化成字符串时自动调用
__toString() 方法用于一个类被当成字符串时应怎样回应。例如 echo $obj; 应该显示些什么。此方法必须返回一个字符串,否则将发出一条 E_RECOVERABLE_ERROR 级别的致命错误。
2,__call
在对象中调用一个不存在方法时,__call() 会被调用。
例子:
class all {
function __call($name,$arguments) {
print("no no!");
}
} $x = new all();
$x->getname();
?>
$name 参数是要调用的方法名称。$arguments 参数是一个枚举数组,包含着要传递给方法 $name 的参数。
3. __autoload()
在PHP4中,当使用一个类的时候,必须将该类所以文件使用include或require加进来,这样就可以使用类了。
而对于PHP5来说也可以使用在PHP4里面的方式,将类文件包进来,但当有了__autoload之后,这种情况就可以靠编写规则也实现。
例子:
function __autoload($className){
echo $className."<br>";
include "./".$className.".class.php";
} // www.
$o=new One();
$o->fun1();
Two::fun2();
$t=new Three();
$t->fun3();
因此,对于PHP5的autoload来说,当加载2个以上的文件或考虑到以后的扩展时或代码规范来说可以使用。
对于一般情况,则没有必要。
但是如果同时使用多个类,加载不同的类文件,对于autoload来说就有必要,只要写入相应的加载规则即可。
>>> 查看更多 php入门教程 <<<
本节内容:
php常见关键字
1,Final 关键字
PHP 5 新增了一个 final 关键字。如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承。
语法:
final class A{}
final不能用来修饰属性
例子:
class A1{
final public function getnum($conunt){
return $conunt*3;
}
} // www.
class B1 extens A1{
//这里父类的getnum方法使用了final,所以这里无法再重写getnum
//public function getnum($conunt){
// return $conunt*4;
//}
}
2,Static(静态)关键字
声明类属性或方法为静态,就可以不实例化类而直接访问。静态属性不能通过一个类已实例化的对象来访问(但静态方法可以)。
为了兼容 PHP 4,如果没有指定访问控制,属性和方法默认为公有。
由于静态方法不需要通过对象即可调用,所以伪变量 $this 在静态方法中不可用。
静态属性不可以由对象通过 -> 操作符来访问。
例子:
class text{
public static $a;
public static function all(){
self::$a='www';
}
}
text::all();
echo text::$a;
}
同样可以使用static关键字来限制变量 这个时候变量不会一直保持上一次负值时候的值
3,类常量(const)
在某些情况下,可能有这样的需求:当不希望一个成员变量被修改,希望该变量的值是固定不变的,这时可以使用const常量(常量名应该全用大写,并且不带$符号,常量不可以加修饰符)
语法:
const 常量名=常量值; //必须赋初值,因为常量是不能修改的
调用:
类名::常量名[本类内部可用self::常量名] 或者 接口名::常量名 //接口中只能使用常量,不能使用变量
例子:
class A{
const TAX_RATE=1.0;
function paytax($salary){
return $salary*self::TAX_RATE;
}
}
$a=new A();
echo $a->paytax(100);
注:
1、常量可以被子类继承
2、常量是属于某个类的,而不属于某个对象
>>> 查看更多 php入门教程 <<<
本节内容:
php面向对象的继承性
说到php面向对象编程中继承:
1. 面向对象的三大特性之一
2. 开放性、可扩充性
3. 增加代码的重用性
4. 提高了软件的可维护性
5. 继承就是用子类去”扩展“父类
6 PHP和Java属于单继承, 同一个类只能有一个父类
一、类继承的应用
1. 声明一个子类,使用 extends 关键字 去继承(扩展)一个父类
2. 子类可以从父类,继承所有的内容,包括成员属性,成员方法, 构造方法 ..., 在子类中都可以直接使用
二、访问类型控制
虽然子类可以从父类中继承所有内容,但private的成员,只能在本类中使用,子类中也不能使用封装时,即可以让自己类的内部可以访问,也让子类可以用,但类的外部不能使用, private --> protected
例子:
class Person {
protected $name;
protected $age;
protected $sex;
function __construct($name, $age, $sex){
$this->name=$name;
$this->sex=$sex;
$this->age=$age;
echo "mmmmmmmmmmmmmmmmm<br>";
}
protected function say(){
echo "我的名-{$this->name}:,我的年龄:{$this->age},我的性别:{$this->sex}.<br>";
} www.
function eat(){
echo "yyyyyyyyyyy";
}
function run(){
}
}
class Student extends Person {
var $school;
function __construct($name, $age, $sex, $school){
parent::__construct($name, $age, $sex);
$this->school=$school;
}
function study(){
echo "{$this->name}在学习.<br>";
$this->eat();
}
public function say(){
parent::say();
echo "我所在的学校{$this->school}<br>";
}
}
$s=new Student("张3", 22, "男", "QingHua");
>>> 查看更多 php入门教程 <<<