我正在扩展其中一个SPL(标准PHP库)类,我无法调用父的构造函数.这是我得到的错误:
致命错误:无法调用构造函数
以下是该SplQueue文档的链接:http://www.php.net/manual/en/class.splqueue.php
这是我的代码:
$queue = new Queue();
class Queue extends SplQueue {
public function __construct() {
echo 'before';
parent::__construct();
echo 'I have made it after the parent constructor call';
}
}
exit;
Run Code Online (Sandbox Code Playgroud)
什么可以阻止我调用父的构造函数?
我使用的是PHP 5.2
我有以下代码:
class MyClass {
public function __construct() {}
public static function stuff() {
echo 'This is static! <br />';
}
}
$myClass = new MyClass();
MyClass::stuff(); // Reference by class.
$myClass->stuff(); // Reference by instance of class.
Run Code Online (Sandbox Code Playgroud)
这两种情况下的输出都是输出:
这是静态的!
这是静态的!
使用第二种参考方式与第一种方式有问题吗?
由于我不允许具有与上述静态功能相同的非静态功能,因此不会出现问题.我希望函数是静态的,因为在使用静态函数时也会提高速度.
我是否遗漏了任何内容,或者这是唯一的问题,关于 - > dereference语法如何表明这是一个静态函数的语义?
我试图通过使用常量来访问一个类对象的数据成员.我想知道这是否可能使用类似于我正在使用的语法?
当我尝试在以下脚本中执行此操作时,我收到此错误:解析错误:语法错误,意外T_PAAMAYIM_NEKUDOTAYIM
class Certificate {
const BALANCE = 'cert_balance';
public function __construct() {}
}
class Ticket {
public $cert_balance = null;
public function __construct()
{
$this->cert_balance = 'not a chance';
echo $this->cert_balance."<br />";
}
}
$cert = new Certificate();
$ticket = new Ticket();
// This next code line should be equal to: $ticket->cert_balance = 'nice';
$ticket->$cert::BALANCE = 'nice!';
Run Code Online (Sandbox Code Playgroud)