Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.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_Class - Fatal编程技术网

PHP从另一个类调用函数

PHP从另一个类调用函数,php,class,Php,Class,当前从同一文件夹中的其他PHP类调用函数时出现问题。我已经实例化了这个类和所有东西,但它仍然不适合我。 从第一个类调用函数时收到的错误消息是: method getHello() not found in class. 希望任何人都知道如何解决这个问题,相信我在什么地方做错了什么。 非常感谢,下面是php文件的代码 <?php class one { private $hello; public function __construct() {

当前从同一文件夹中的其他
PHP类调用函数时出现问题。我已经实例化了这个类和所有东西,但它仍然不适合我。
从第一个类调用函数时收到的错误消息是:

method getHello() not found in class.
希望任何人都知道如何解决这个问题,相信我在什么地方做错了什么。 非常感谢,下面是
php
文件的代码

<?php
class one 
{

    private $hello;

    public function __construct()
    {
        $this->hello = '';
    }

    public function getHello()
    {
        return $this->hello;
    }

    public function setHello($newHello)
    {
        $this->hello = $newHello;
    }
}
?>

第二节课呢

<?php

class two 
{

    private $sixPack;

    public function __contruct()
    {
        $this->sixPack  = new one();
    }

    public function setSixPack($newSixPack)
    {
        $this->sixPack = $newSixPack;
    }

    public function getSixPack()
    {
        return $this->sixPack;
    }

    public function access_function_one_methods()
    {
        // this is causing the problem, cannot access getHello

        $sad = $this->sixPack->getHello();
    }
}
?>


这是构造函数中的拼写吗?也许可以称之为_construct()?(缺少一个s?

这似乎有效,我不确定这是否是你想要的,但试试看:

第二类的文件::
            private $sixPack;

            public function __construct()
            {
                include_once('/Users/hakunamatata/Desktop/one.php');
                $this->sixPack  = new one();
                print("second construct \n");
            }

            public function setSixPack($newSixPack)
            {
                $this->sixPack = $newSixPack;
            }

            public function getSixPack()
            {
                return $this->sixPack;
            }

            public function access_function_one_methods()
            {
                // this is causing the problem, cannot access getHello
                print("function calling class one \n");
                $sad = $this->sixPack->getHello();
                echo $sad;
            }
          }
        $two = new two();
        echo $two->access_function_one_methods();
?>
第一类的文件::

            private $sixPack;

            public function __construct()
            {
                include_once('/Users/hakunamatata/Desktop/one.php');
                $this->sixPack  = new one();
                print("second construct \n");
            }

            public function setSixPack($newSixPack)
            {
                $this->sixPack = $newSixPack;
            }

            public function getSixPack()
            {
                return $this->sixPack;
            }

            public function access_function_one_methods()
            {
                // this is causing the problem, cannot access getHello
                print("function calling class one \n");
                $sad = $this->sixPack->getHello();
                echo $sad;
            }
          }
        $two = new two();
        echo $two->access_function_one_methods();
?>
<?php
    class one {

                    private $hello = "Je";
                    public function __construct()
                    {
                        print("first construct \n");
                        $this->hello = 'Hello';
                    }

                    public function getHello()
                    {
                        echo "we are here \n";
                        return $this->hello;
                    }

                    public function setHello($newHello)
                    {
                        $this->hello = $newHello;
                    }
                 }

?>

+1为什么投票被否决?这很可能是个问题;如果没有构造函数,则变量不会初始化为另一个类的实例。@jycr753建议不是构造函数是必需的。他在构造函数中初始化了sixpack,所以他不能在其中包含拼写。@jeroen大概是因为它应该是一个注释,而不是一个注释answer@MarkParnell好吧,但至少要留下一条评论,说它应该改进。事实上,它(可能,根据错误消息判断…)解决了问题,因此没有必要进行下一票。为什么不使用extends呢您如何调用您的方法,您是否使用了类
two
的setter并用其他内容覆盖了变量?@Jordan Correct,当您修复构造函数中的输入错误并包含两个文件时,您的代码运行正常/没有任何错误:顺便说一句,您应该发布完整的错误消息,而不仅仅是摘要。@jeroen感谢您的关注,似乎输入错误才是问题所在!!干杯,伙计,或者你可以尝试一个两个文件的版本,类似于你现在拥有的-它将是一样的,只要在file@jycr753谢谢你的巨大努力。它现在正在工作,相信打字错误是改变的主要原因