php 面向对象学习
面向对象:
<?php
class foo {
function do_foo() {
echo "doing foo";
}
}
$bar = new foo;
$bar->do_foo();
?>
转换为 object:
如果一个值被转换为 object 类型,则会创建 stdClass 这个类的实例。
如果 value 是 null, 则实例是 empty.
对其他任何的值,会有一个 scalar 字段表示这个变量的值。
<?php
$obj = (object) 'ciao';
echo $obj->scalar;
?>
类成员变量不能直接指定值。必须在 constructor 函数中初始化。
但是只包含常数元素的数组成员却可以在定义时初始化。
this 指针的写法是 $this
parent 指向父类
继承的语法是 extends
不支持多继承
序列化与反序列化:
<?php
// classa.inc:
class A {
var $one = 1;
function show_one() {
echo $this->one;
}
}
// page1.php:
include("classa.inc");
$a = new A;
$s = serialize($a);
// store $s somewhere where page2.php can find it.
$fp = fopen("store", "w");
fwrite($fp, $s);
fclose($fp);
// page2.php:
// this is needed for the unserialize to work properly.
include("classa.inc");
$s = implode("", @file("store"));
$a = unserialize($s);
// now use the function show_one() of the $a object.
$a->show_one();
?>
也可以用 session_register 来方便的序列化对象到 session 中。取出来时,会被自动
反序列化。
__sleep 和 __wakeup 函数:
在 serialize 函数被执行前,会自动调用对象的 __sleep 函数,这里可以作一些关闭
数据库连接,提交等待的数据等清理性的操作。
在 unserialize 函数被执行前,会自动调用对象的 __wakeup 函数,这里可以做一些初始化
数据库连接之类的操作。