我最近对 PHP 5.4 进行了更新,但收到有关静态和非静态代码的错误。
这是错误:
PHP Strict Standards: Non-static method VTimer::get()
should not be called statically in /home/jaco/public_html/include/function_smarty.php on line 371
这是第371行:
$timer = VTimer::get($options['magic']);
我希望有人能帮忙。
最优雅的方式应该是:
(new ClassName)->method();
您也可以将函数转换为静态函数调用() {}
,但这取决于您的函数以及您使用它做什么。
如果你需要实例化一个类,那么避免这样做,像对待常量一样对待静态函数,它们不能有对象,需要预定义的变量。
您也可以将该方法更改为静态方法,如下所示:
class Handler {
public static function helloWorld() {
echo "Hello world!";
}
}
这意味着它应该被称为:
$timer = (新 VTimer)-
< code>static
和< code>non-static之间的区别在于,第一个不需要实例化,因此您可以调用< code>classname,然后将< code>::追加到它,并立即调用该方法。像这样:
ClassName::method();
如果该方法不是静态的,您需要像这样初始化它:
$var = new ClassName();
$var->method();
但是,在 PHP 中
(new ClassName)->method();
我正在使用存储库模式并尝试建立模型之间的关系。当我尝试运行存储()方法(在控制器中),该方法试图使用用户()方法(与方模型建立关系)时,我收到以下错误消息: 非静态方法不应该静态调用::user(),假设$this来自不兼容的上下文 我不明白为什么在尝试运行user()relationship方法时会出现此错误,但所有其他方法(包括$this- 以下是相关代码:
我一直试图用我的验证代码进行php pear验证,但我收到的都是严格标准错误--问题是什么?我如何修复它? 电子邮件验证.php
PHP严格标准:不应在第33行的/web/sites/blah/somescript.PHP中静态调用非静态方法pear::iserror() 我在MDB2上看到了类似的错误。稍后再详细介绍。 somescript.php: 问题 是否有不同的方法来调用而不会产生错误?
我正在尝试在varGrant CentOS VM上本地运行一个codegniter站点。我已经下载了所有文件,并设置了yaml/host文件等。 我在屏幕上看到这个错误。 遇到 PHP 错误 严重性:8192 消息:非静态方法 MY_Loader::d efine_module() 不应静态调用,假设$this来自不兼容的上下文 文件名:controllers/Front _ controller
我正在努力得到一个用户的基础上,他的id或电子邮件后,他登录通过一个表单。这个函数是在user.class.php中定义的,我想在另一个名为profile.php的php文件中调用它,但它仍然给我带来语法错误,我不知道如何修复它。 错误:不推荐使用:不应静态调用非静态方法User::GetUserId()注意:未定义变量:email in 使用getters和setters,函数 下面是profi
我在magento日志中得到这个错误: 严格注意:非静态方法 Mage_Catalog_Block_Product:getPriceHtml() 不应静态调用,假设$this来自第 23 行 /home/edistico/domains/fujitsu-skener.si/public_html/app/design/frontend/base/default/template/callforpr