为什么调用我的类中定义的函数会抛出一个未定义的函数错误?

时间:2017-02-03 18:09:17

标签: php oop static

这是我的代码:

<?php
class Render {
    public $dimensions =array();

    public function getDimensions($room) {
      return $this->dimensions;
    }
    public static function displayDimensions($size) {
      return $size[0] . " x " . $size[1];
    }

    public static function detailsKitchen($room) {
      return "Kitchen Dimensions: " . Render::displayDimensions(getDimensions($room));
    }
}
$room = new Render();
$room->dimensions[] = (20);
$room->dimensions[] = (10);
?>

这是错误:

  

PHP致命错误:未捕获错误:在index.php中调用未定义函数getDimensions():12堆栈跟踪:#0 6033c6f9-bc53-4bfa-9e1d-a403951652f5.php(176):Render :: detailsKitchen(Object(房间))在第12行的index.php中抛出#1 {main}致命错误:未捕获错误:在index.php中调用未定义函数getDimensions():12堆栈跟踪:#0 6033c6f9-bc53-4bfa-9e1d-a403951652f5。 php(176):Render :: detailsKitchen(Object(Room))在第12行的index.php中抛出#1 {main}

2 个答案:

答案 0 :(得分:0)

也许您应该尝试$room->getDimensions(),而不是使用您的实例作为参数调用该方法(您应该相应地更改您的方法)。

答案 1 :(得分:0)

在任何语言中,都不能从静态上下文中调用非静态方法。这就是为什么它说没有定义。因为我认为你打算这样做

$room->getDimensions()

,您应该将getDimensions()更改为$ room-&gt; getDimensions()。