总之......问题是......“说什么?”要扩展......“我没有得到错误”
严格标准:非静态方法Pyro \ Template :: preLoad()不应该静态调用,假设$ this来自/ opt / lampp / htdocs / dc / pyro / app / controllers / admin / courses中的不兼容上下文。第14行的PHP
public function actionIndex() {
$this->data->users = $this->DB->query("SELECT id, name, description FROM :@courses")->getAll();
$this->data->title = 'Courses';
$this->data->content_area = \Pyro\Template::preLoad('admin/courses/index', $this->data); // Line 14
}
模板......它不完整......
<?php
namespace Pyro;
class Template {
// Stores default master template
public static $defaultTemplate = 'template.php';
public function preLoad($template, $page) {
ob_start();
include( VIEWS . "{$template}.php");
$buffer = ob_get_contents();
@ob_end_clean();
return $buffer;
}
public function load($page) {
include( VIEWS . self::$defaultTemplate);
}
}
为什么会出现此错误?干杯
答案 0 :(得分:2)
preLoad功能不是静态的。这意味着只有类Template的对象才能使用此方法。静态方法独立于类的任何对象。
Template :: preLoad是静态调用:您没有创建Template对象,然后调用preLoad方法。所以基本上,你有两个解决方案:
答案 1 :(得分:0)
preLoad
函数应该是静态的
public static function preLoad($template, $page) {
答案 2 :(得分:0)
preLoad函数不是静态的。 ti应该是这样的:
public static function preLoad($template, $page) {
ob_start();
include( VIEWS . "{$template}.php");
$buffer = ob_get_contents();
@ob_end_clean();
return $buffer;
}
答案 3 :(得分:0)
就像所有人说的那样,你用静态方法调用函数:
Template::preLoad(xxx)
::
表示PHP中的静态。函数通常称为静态::
或对象->
调用。
函数定义是一个或另一个:
public static function preLoad($template, $page)
称为:Template::preLoad('admin/courses/index', $this->data);
或强>
public function preLoad($template, $page)
称为Template->preLoad('admin/courses/index', $this->data);
作为参考,可以在不实例化对象的情况下调用静态函数。如果您的函数不需要运行对象,则可以将其设置为静态。基本上,这意味着您无法在静态方法中引用$this
。它将使用给定的输入运行,而不必构造对象。