首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP无法访问空属性错误

PHP无法访问空属性错误
EN

Stack Overflow用户
提问于 2012-11-07 16:25:48
回答 2查看 1.8K关注 0票数 1

我得到了以下错误,我似乎不知道为什么或如何被触发。

Fatal error: Cannot access empty property in /home/content/p/l/a/plai1870/html/com/php/Bone/Compiler.php on line 18

第18行是

代码语言:javascript
复制
throw new LogicException($this->$compilers[$language]." is not a supported compiler.");

这是Compiler.php

代码语言:javascript
复制
<?php
namespace Bone;
use LogicException;

class Compiler implements \Bone\Interfaces\Compiler {

    protected $compiler;

    protected $compilers = array(
        "php"           => "PHP",
        "as3"           => "ActionScript3",
        "javascript"    => "Javascript"
    );

    public function __construct($language) {
        $language = strtolower($language);
        if (!isset($this->$compilers[$language])) {
            throw new LogicException($this->$compilers[$language]." is not a supported compiler.");
        }
        $compiler = "\Bone\Compilers\\".$this->$compilers[$language]."\Compiler";
        $this->compiler = new $compiler();
    }

    public function buildDefinition($object, $path = null) {
        return $this->compiler()->buildInterface($object, $path);
    }

    public function buildObject($object, $path = null) {
        return $this->compiler->buildObject($object, $path);
    }   

    public function parameters($method) {
        return;
    }

    public function save($data, $path) {
        return;
    }
}
?>

编辑,我用以下方式调用它:

代码语言:javascript
复制
$compiler = new \Bone\Compiler("php");
EN

回答 2

Stack Overflow用户

发布于 2012-11-07 16:27:38

抱歉,如果这是最明显的,但是:

代码语言:javascript
复制
throw new LogicException($this->$compilers[$language]." is not a supported compiler.");

由于已检查该属性不存在,因此不应该:

代码语言:javascript
复制
throw new LogicException("$language is not a supported compiler.");

编辑:

代码语言:javascript
复制
$this->$compilers[$language]
       ^- variable property

移除$

代码语言:javascript
复制
$this->compilers[$language]

然后,您可以检查数组中的条目是否已设置,而不是是否设置了(unset)数组$compilers (局部变量)中值名称的属性。

在开发时,请始终打开警告和通知(可以想象的最高错误级别),在没有PHP警告的情况下不会遇到这些问题。

票数 7
EN

Stack Overflow用户

发布于 2012-11-07 16:31:20

您的数组是$this->compilers,而不是$this->$compilers

函数中不存在$compilers,因此$this->$compilers正在寻找一个空白属性。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13273905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档