科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件PHP的面向对象编程

PHP的面向对象编程

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在PHP编程中, 我们经常会遇到一些直接产生输出的函数,如passthru(),readfile(),var_dump() 等....

作者:李乔 来源:yesky 2007年10月26日

关键字: Linux

  • 评论
  • 分享微博
  • 分享邮件
如何在PHP中实现析构函数功能?

  在OOP中,我们可以重载一个方法来实现两个或重多的方法具有相同的名字,但是有不同数量或类型的参数(这要看语言)。PHP 是一种松散类型的语言,没有析构函数,所以通过类型重载或者通过参数的个数不同来重载也没有作用。

  有时在OOP中重载构造函数非常好,这样可以通过不同的方法创建对象(传递不同数量的参数)。而在PHP中,怎么去实现同等的功能呢?技巧如下:

    <?php
    class Myclass {
      function Myclass() {
        $name="Myclass".func_num_args();
        $this->$name();

        //注意$this->name()一般是错误的,但是在这里$name是一个将被调用方法的名字
      }
      function Myclass1($x) {
        ……
      }
      function Myclass2($x,$y) {
        ……
      }
    }
    ?>

  通过在类中的额外的处理,使用这个类对用户是透明的:

    $obj1=new Myclass('1'); //将调用Myclass1
    $obj2=new Myclass('1','2'); //将调用Myclass2

  如何在PHP中应用多态性?

  多态性在象PHP这样的解释语言是非常容易和自然的:

    <?php
    function niceDrawing($x) {
      //假设这是Board类的一个方法
      $x->draw();
    }

    $obj=new Circle(3,187);
    $obj2=new Rectangle(4,5);

    $board->niceDrawing($obj);
    //将调用Circle的draw方法

    $board->niceDrawing($obj2);
    //将调用Rectangle的draw方法
    ?>

  如何应用序列化(Serializing) 机制?

  PHP不支持永久对象,而在OOP中永久对象是可以在多个应用的引用中保持状态和功能的对象,这意味着拥有将对象保存到一个文件或数据库中的能力,而且可以在以后装入对象。这就是所谓的序列化机制。PHP 拥有序列化方法,它可以通过对象进行调用,序列化方法可以返回对象的字符串表示。然而,序列化只保存了对象的成员数据而不包话方法。

  例子 :

    <?php
    $obj=new Classfoo();
    $str=serialize($obj);

    //保存$str到磁盘上
    //几个月以后
    //从磁盘中装入str

    $obj2=unserialize($str)
    ?>
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章