覆盖类中的预定义函数。

时间:2014-05-09 12:39:39

标签: php namespaces override

我想使用命名空间

覆盖类中的预定义函数
// one.class.php

class One{
  public function __construct($str){
    echo strtolower($str);
  }
}

好的,调用它会导致

new One("mIxEd"); // mixed

我想覆盖第一类

内的 strtolower 功能

我试图这样做

// blabla.class.php
namespace blabla;
function strtolower($str){
  return strtoupper($str);
}
class One extends \One{};

好的,然后当我把它们放在一起

// script.php
require_once("one.class.php");
require_once("blabla.class.php");
new One("mIxEd"); // mixed
new blabla\One("mIxEd"); // mixed

输出它仍然是小写的,所以我不会在第一课中覆盖strtolower。

如果可能的话,我会徘徊...... 谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

你需要覆盖blabla \ One中的构造函数来调用命名空间的strtolower。

class One extends \One {
   public function __construct($str) {echo strtolower($str);}
}