Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-访问类中的非类函数_Php_Function_Class_Constructor_Member - Fatal编程技术网

PHP-访问类中的非类函数

PHP-访问类中的非类函数,php,function,class,constructor,member,Php,Function,Class,Constructor,Member,我的尝试:在名为bradpitt.php的文件中有$getSomeData函数。这是一个简单的函数。它不在类中。其中我有另一个文件名jolie.php。此文件有一个类。我试图访问该文件中的$getSomeData() CoolPlugin.php class CoolPlugin extends plugin { const COOLLIST = 'properties/coolBoy.json'; public function getSomeData () {

我的尝试:在名为bradpitt.php的文件中有
$getSomeData
函数。这是一个简单的函数。它不在类中。其中我有另一个文件名jolie.php。此文件有一个类。我试图访问该文件中的
$getSomeData()

CoolPlugin.php

class CoolPlugin extends plugin
{
    const COOLLIST = 'properties/coolBoy.json';

    public function getSomeData () {
        return DataUtil::readDataFile(self::COOLLIST);
    }
include_once 'bradpitt.php';
class Jolie{
    public $getSomeData;
    public function __construct(){
        global $getSomeData;
        $this->$getSomeData();
    }
}
include_once 'jolie.php';
$joiliePage = new Jolie();
var_dump($joiliePage->getSomeData);

ERROR:
Notice: Undefined variable: joiliePage in output.php on line 173
Notice: Trying to get property of non-object in output.php on line 173
**NULL**
bradpitt.php(非类文件-一个简单函数)

jolie.php

class CoolPlugin extends plugin
{
    const COOLLIST = 'properties/coolBoy.json';

    public function getSomeData () {
        return DataUtil::readDataFile(self::COOLLIST);
    }
include_once 'bradpitt.php';
class Jolie{
    public $getSomeData;
    public function __construct(){
        global $getSomeData;
        $this->$getSomeData();
    }
}
include_once 'jolie.php';
$joiliePage = new Jolie();
var_dump($joiliePage->getSomeData);

ERROR:
Notice: Undefined variable: joiliePage in output.php on line 173
Notice: Trying to get property of non-object in output.php on line 173
**NULL**
output.php

class CoolPlugin extends plugin
{
    const COOLLIST = 'properties/coolBoy.json';

    public function getSomeData () {
        return DataUtil::readDataFile(self::COOLLIST);
    }
include_once 'bradpitt.php';
class Jolie{
    public $getSomeData;
    public function __construct(){
        global $getSomeData;
        $this->$getSomeData();
    }
}
include_once 'jolie.php';
$joiliePage = new Jolie();
var_dump($joiliePage->getSomeData);

ERROR:
Notice: Undefined variable: joiliePage in output.php on line 173
Notice: Trying to get property of non-object in output.php on line 173
**NULL**
如何在PHP中调用和访问另一个类中的简单函数(以对象形式返回)


当它返回NULL时,我做错了什么

您发布的代码充满了问题

var_dump($joiliePage->getSomeData);

ERROR:
Notice: Undefined variable: joiliePage in output.php on line 173
Notice: Trying to get property of non-object in output.php on line 173
**NULL**
假设is第173行是上面列出的那一行,两条错误消息都说明了相同的事情:变量
$joiliePage
未初始化(解释器认为其值为
NULL

不要被PHP将它们归类为“通知”的事实所愚弄。它们是从解释器的角度来看的通知(它找不到变量),但它们是代码的错误,因为它无法成功继续


函数名为
\uu construct()
,但您可能希望它是类。它不是构造函数,解释器不会自动调用它,因为它没有正确的名称。构造函数的名称是
\u construct()
。注意,在代码中缺少中间的“S”。

方法
\uu construct()
声明全局变量
$getSomeData
如果成功包含了文件
bradpitt.php
(如果该文件不存在,则可能会失败并发出警告而不中断脚本),则
$getSomeData
符号引用与文件
bradpitt.php
中定义的同名变量

但是,调用
$this->$getSomeData()
并不引用此全局变量。它使用具有相同名称的类属性,该属性已初始化。此代码无法运行

要调用全局变量
$getSomeData
中存储的函数,代码应为:

public function __construct(){
    global $getSomeData;
    $getSomeData();
}

还要注意,该语句结尾缺少分号,并产生语法错误。您的类的定义不正确,无法编译,无法创建类型为
Jolie
的对象。

对于初学者:
joliePage
!=<代码>作业页面。另外,您是否在
output.php
中包含了
jolie.php
?@FirstOne-对不起!并更正了输入错误,在
output.php
中添加了include
jolie.php
。中的代码应该在CoolPlugin.php中作为对象返回。我的最终目标是在
jolie.php
中打印
coolBoy.json
数据。如果我在
output.php
中直接打印,比如
$see=$getSomeData();var_dump(见)
我正在打印JSON数据,但如果尝试通过
joile.php
访问和打印,则不会发生这种情况。我该如何用OO的方式做同样的事情呢?谢谢你的努力。。而
\u构造
不是问题。我接受您的回答,
$this->$getSomeData()未引用此全局变量。哪一个是错误的。