php中常用的关键字
final
1.final不能修饰成员属性(常量不是用这个修饰)
2.final只能修饰类和方法
使用final修饰的类不能被子类继承
使用final修饰的方法不能被子类去覆盖(与private的用法相同)
static(静态)
1.使用 static可以修饰成员属性和成员方法,不能修饰类
2.用static修饰的成员属性可以被同一个类的所有对象共享
3.静态数据存在内存中的数据段中的(内存存储结构图可见,最上面一条)
4.静态数据实在类第一次加载是分配到内存中的,以后再用到类时就可以直接用,不用重复声明
5.什么是类被加载?只要在程序中使用到这个类(有这个类名出现)
注意:静态的成员都要使用类名去访问,不用创建对象
类名::静态成员
如果在类中使用静态成员,可以使用self代表本类
self::静态变量名
6.静态方法(static修饰的方法),不能访问非静态的成员,如果你确定一个方法中不用非静态成员才声明静态方法
const(常量)
1.只能修饰成员属性(不能修饰类和方法)
define(‘host’,‘’);
2.类中声明常量属性使用const
3.命名的方式和我们以前学习的define是一样的效果
4.访问方式和static静态成员属性是一样(在类外部使用 在类外部使用 类名::常量,在类内部使用 self::常量)
关键字 $this self parent...
php中常用的魔术方法
__call()
作用:在调用对象中不存在的方法时,就会出现系统报错,程序退出。
处理一些不存在方法的错误调用
这个方法需要两个参数
function__call($methodName,$args){
echo "你调用的方法{$methodName}(参数:";
print_r($args);
echo")不存在
";
}
什么时候调用: 就会调用一个对象中不存在的方法是自动调用
__toString()//当直接输出对象引用时,自动调用此函数,用来快速获取对象的字符串表示的最快捷的方式
对象串行化(序列化): 将一个对象转为二进制串 (对象是存储在内存)
1. 将对象长时间存储在数据库或文件中时
2. 将对象在多个PHP文件中传输时
serialize() : 参数是一个对象,返回来的就是串行化后的二进制串
$str=serialize($p);
unserialize() : 参数就是对象的二进制串, 返回来的就是新生成的对象
$p=unserialize($str);
__sleep()//是在序列化是自动调用的方法
作用:将一个对象部分串行化
只要这个方法中返回一个数组,数组中有几个成员属性就序列化几个成员属性,如果不加这个方法,则所有成员都被序列化
__autoload()
注意: 其它的魔术方法都是在类中添加起作用,这是一个唯一一个不在类中添加的方法
只要在页面中使用一个类,只要用到类名就会自动将类名传给这个参数
function __autoload($className){
include "./".$className.".class.php";
}
__clone() //使内存中有两个相同的,为克隆对象初始化
function __clone(){
$this->name="复本 名字 " //$this 表示复本
}
$p1 clone $p;
class Person {
var $name;
protected $age;
protected $***;
static $country="中国";
const HOST="localhost";
function __construct($name, $age, $***){
$this->name=$name;
$this->***=$***;
$this->age=$age;
echo "###################
";
}
function getCountry(){
return self::$country;
}
function setCountry($country){
self::$country=$country;
}
function say(){
echo "我的名-{$this->name}:,我的年龄:{$this->age},我的性别:{$this->***}.
";
}
function eat(){
echo "wwwwwwwwwwwwwwww";
}
function __call($methodName, $args){
echo "你调用的方法{$methodName}(参数:";
print_r($args);
echo ")不存在
";
}
阅读(1407) | 评论(0) | 转发(0) |