为什么PHP堆栈(我构建的)不起作用


why PHP stack (that i build) didnt work?

我尝试用PHP构建堆栈,但它不起作用。

这是我看到的问题:

Warning: Missing argument 1 for object::object(), called in C:'Program Files (x86)'EasyPHP-12.1'www'tb'index.php on line 152 and defined in C:'Program Files (x86)'EasyPHP-12.1'www'tb'index.php on line 126
Notice: Undefined variable: txt in C:'Program Files (x86)'EasyPHP-12.1'www'tb'index.php on line 127
Fatal error: Call to undefined function back() in C:'Program Files (x86)'EasyPHP-12.1'www'tb'index.php on line 146

这是代码:(我在代码中用//写了问题的行)

class object {
    private $obj;
    private $next = null;
    private $back = null;
    public function object($txt) {     // line 126
        $this->obj = $txt;     // line 127
    }
    public function back($back) {
        $this->back = $back;
    }
    public function next($next) {
        $this->next = $next;
    }
}
class stack2 extends object  {
    private $arr;
    private $head = -1;
    private $tail = 0;
    public function push($txt) {
        $this->head++;
        $arr[$this->head] = new object($txt);  
        if ($this->head-1 >= $this->tail) {  
            $arr[$this->head].back($this->head-1);     // line 146 
            $arr[$this->head-1].next($this->head); 
        }
    }
}
$s = new stack2();   // line 152
$s->push(11111);
$s->push(22222);

您的object构造函数定义了一个参数$txt用于实例化类。在从object固有的类stack2中,您还必须编写一个构造函数,该构造函数使用所需的参数调用其父构造函数。

class stack2 extends object {
  public function __construct() {
    $txt = 'your text here';
    parent::object($txt);
  }
}

我会使用 magic 方法__construct而不是与类同名的方法。因为如果你重构类名,你还必须重构你的构造函数名称。

第二个错误是使用.而不是->调用对象的方法。所以正确的行是:

$arr[$this->head]->back($this->head-1);

您希望适当地使用 stack 类的属性$arr,因此您必须使用 $this->arr,而不是简单地$arr上面的示例行。