Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.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_Function_Variables - Fatal编程技术网

Php 在类&;中从函数传递变量;课外回音

Php 在类&;中从函数传递变量;课外回音,php,class,function,variables,Php,Class,Function,Variables,假设我有这个代码: class cats { function cats_suck() { $this->cats = "monkeys"; } } $cats = new cats; $cats->cats_suck(); echo $cats->cats; //Monkeys? 我想将$cats传递到我的类之外,我通常只返回$cats然后回显函数,但我的代码中有很多变量。您可以添加一个getter: function getcatmo

假设我有这个代码:

class cats {

    function cats_suck() {
        $this->cats = "monkeys";
    }

}

$cats = new cats;
$cats->cats_suck();
echo $cats->cats; //Monkeys?

我想将
$cats
传递到我的类之外,我通常只返回$cats然后回显函数,但我的代码中有很多变量。

您可以添加一个getter:

function getcatmonkeys() {
    return $this->cats;
}
那么:

$cats = new cats;
$cats->cats_suck();
echo $cats->getcatmonkeys();
$cats = new cats;
$cats->cats_suck();
echo $cats->cats; //Monkeys

或者,您可以将所有私人物品存储在一个数组中,并添加一个神奇的方法来获取:

private $data = array();

function cats_suck() {
    $this->data['cats'] = "monkeys";
}

public function __get($name)
{
    return $this->data[$name];
}
那么:

$cats = new cats;
$cats->cats_suck();
echo $cats->getcatmonkeys();
$cats = new cats;
$cats->cats_suck();
echo $cats->cats; //Monkeys

哪一种方法违背了私密的目的,但我们并不质疑为什么。

将$cats定义为类中的公共变量:

class cats {
    public $cats;

    function cats_suck() {
        $this->cats = "monkeys";
    }

}

你给我们的代码不足以帮助你。考虑添加一些真正的代码,或者一个清楚地说明问题的代码。这些代码甚至不会运行。在名为
cats
的类中没有变量。后真实code@nickb不,它将失败,并出现一个名为cats的丢失属性的错误。或者PHP是否进一步发展,使得难以调试的蹩脚代码更容易编写?@Cole-No,@ColeJohnson您可以动态添加属性(默认情况下它们是私有的)。这并不一定很糟糕,因为它在tin上告诉您它是松散类型的。没有理由期望对象符合契约。嗯,好主意。这将100%有效,但我的脚本中有大约20-30个变量。@user1742590添加了另一种方法。非常感谢您的帮助!回答得又快又好!哇,这么简单的回答。我真傻,我试过搜索,也许我搜索得不对。谢谢你,哈哈,我是个白痴。我试着把函数公诸于众,公诸于众,等等。。这和将var定义为public一样简单。非常感谢。