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 函数,这里可以做一些初始化
数据库连接之类的操作。

posted on 2005-11-22 18:23 NeilChen 阅读(...) 评论(...)  编辑 收藏

公告

导航