【问题标题】:PHP Return value from Inner classPHP从内部类返回值
【发布时间】:2023-03-10 12:33:01
【问题描述】:

我心中有这个问题,至今仍让我感到困惑。我在 PHP 中有一个类,它具有通过调用同一类的其他方法来操作值的方法。所有这些函数都通过“return”语句返回某种排序值。但是当我调用任意数量的函数进行操作时,问题就出现了,它总是通过第一个函数调用结束脚本。 例如

(对不起,伪代码)

Class H
Method1
$this->Method2()
$this->Method3()
Method2
Returns something
Method3
Returns something
End

当我使用脚本中的 method1 时,它会调用另外两个具有返回值的方法。我的脚本在 Method1 中的 Method2 上结束。

【问题讨论】:

  • 您可以发布示例代码或我们可以查看的内容以更好地解释它吗?
  • 暂时不行,但我想问一下在返回内容时使用 echo stmt 是一种好方法吗?因为当我在method1中调用method2时脚本会结束,所以我也想在method2执行后使用method3

标签: php methods return


【解决方案1】:

那是因为return 杀死进程并返回你想要的。您可以拥有该类的内部属性并检索这些属性。设置这些属性的方法称为setters,检索它们的方法称为getters。看看这个示例类:

<?php

Class MyClass {

    public $firstName;
    public $lastName;
    public $city;

    // Setters
    public function setFirstName($name)
    {
        $this->firstName = $name;
    }

    public function setLastName($name)
    {
        $this->lastName = $name;
    }

    public function setCity($city)
    {
        $this->city = $city;
    }

    // Getters
    public function getFullName($name)
    {
        return "{$this->firstName} {$this->lastName}";
    }

    public function getCity($name)
    {
        return $this->city;
    }

}

现在,因为我设置了这些属性,我可以轻松地实例化我的类并获取该信息:

$class = new MyClass();

$class->setFirstName('David');
$class->setLastName('Parker');
$class->setCity('AnyTown');

echo $class->firstName; // David

echo $class->lastName;  // Parker

echo $class->city; // AnyTown

// or something like

echo $class->getFullName(); // David Parker

如果您只想简单地回显数据,则实例化类并回显类的属性可能更有意义。我发现在课堂上return 通常是一个好习惯。使用该类对象时最好使用echo

希望这是有道理的。

【讨论】:

  • 我知道 getter 和 setter,但谢谢。您已经通过实例化一个类然后对其进行操作进行了演示。如果我不得不操作来自同一类的其他函数的值,而不实际实例化它会怎样。我希望你明白了吗?
  • 哥们,我不想重复它,它只是在浏览器上打印
【解决方案2】:

首先你必须学习 PHP 中 OOPS 的基础知识..尤其是方法的返回类型、方法重载和覆盖.. http://www.killerphp.com/tutorials/php-objects-page-3/ 我希望这个能让你感觉更好……如果我的回答听起来不好,请不要提问……继续搜索……这将是一个棘手的问题……

【讨论】:

  • 我已经在 oops 中学习了所有这些内容。这实际上扼杀了我的思想!
  • 我简要介绍了你的......它就像一个循环......最后当你调用一个方法时,这个循环从第一个开始......所以它在第一个方法之前给出......是吗填写您的问题?
  • 是的,完全正确。我不希望我的脚本在那里结束
  • 那么你必须使用方法重载..它永远不会结束..但我们可以通过参数选择所需的方法..不是吗??
  • 不!确切地。我只想操纵任何东西。但不希望我的脚本回显它或以失败告终
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-02
  • 1970-01-01
  • 2021-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多