我尝试在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);
答案 0 :(得分:2)
您的object
构造函数定义了一个参数$txt
来实例化该类。在您的stack2
类object
中,您必须编写一个构造函数,该构造函数使用所需的参数调用其父构造函数。
class stack2 extends object {
public function __construct() {
$txt = 'your text here';
parent::object($txt);
}
}
我会使用魔术方法__construct
而不是与类同名的方法。因为如果你重构类名,你还必须重构你的构造函数名。
您的第二个错误是您使用.
而不是->
来调用对象的方法。所以正确的行是:
$arr[$this->head]->back($this->head-1);
您想要使用$arr
课程的stack
属性,因此您必须在上面的示例行中使用$this->arr
而不是简单的$arr
。