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谢谢你的巨大努力。它现在正在工作,相信打字错误是改变的主要原因