科技行者

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

知识库

知识库 安全导航

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

PHP的面向对象编程

  • 扫一扫
    分享文章到微信

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

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

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

关键字: Linux

  • 评论
  • 分享微博
  • 分享邮件
如何在派生类中重定义一个方法?

  我们可以在派生类中重定义一个方法,如果我们在"HelloPHPWorld"类中重定义了getValue方法,我们就不能使用"ClassName"中的getValue方法了。如果我们在派生类中声明了一个与基派同名的数据成员,那么当我们处理它时,它将"隐藏"基类的数据成员。

  如何在类中定义构造函数?

  构造函数是一个与类名同名的方法,当创建一个类的对象时,该函数会被调用以用来初始化对象,例如定义一个类:

    <?php
    class ClassName {
      var $value;
      function ClassName($v) {
        $this->value=$v;
      }
      function setValue($v) {
        $this->value=$v;
      }
      function getValue() {
        return $this->value;
      }
    }
    ?>

  上例中,类中的成员函数ClassName即一个构造函数,现在我们可以这样创建对象:

    $obj=new ClassName("Hello,PHP world!");

  将参数传递给构造函数,构造函数则会自动地将"Hello,PHP world!"赋值给函数中的数据变量value。构造函数和方法都是普通的PHP函数,所以可以使用缺省参数。

    function ClassName($k="welcome",$v="Hello,PHP world!")
  接着:
    $obj=new ClassName(); // $key="welcome",value="Hello,PHP world!"
    $obj=new ClassName("I love PHP!"); // $key="welcome",value="I love PHP!"
    $obj=new ClassName("First","I love PHP!"); // $key="First",value="I love PHP!"

  缺省参数使用C++的方式,参数是从左到右赋值的,如果传入的参数少于要求的参数时,其余的将使用缺省参数。

  当一个派生类的对象被创建时,只有它的构造函数被调用,父类的构造函数没被调用,如果你想调用基类的构造函数,你必须要在派生类的构造函数中显式调用。可以这样做是因为在派生类中所有父类的方法都是可用的。

    <?php
    function HelloPHPWorld() {
      $this->message="Hello,PHP world!";
      $this->ClassName();
      //显式调用基类构造函数
    }
    ?>

  在PHP中没有标准的方法来实现抽象类,但是如果需要这个特性,可以通过定义基类,并在它的构造函数后加上"die" 的调用,这样就可以保证基类是不可实例化的,现在在每一个方法(接口)后面加上"die" 语句,所以,如果一个程序员在派生类中没有覆盖方法,将引发一个错误。而且因为PHP 是无类型的,所以可能需要确认一个对象是来自于基类的派生类,那么在基类中增加一个方法来实义类的身份(返回某种标识id),并且在接收到一个对象参数时校验这个值。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

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

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