【问题标题】:Get values from vars inside class across other functions跨其他函数从类内的变量中获取值
【发布时间】:2020-01-21 22:50:05
【问题描述】:
class dir_exam 
{
    public $db_ruta;

    function __construct($db_ruta) 
    { 
      $this->db_ruta=$db_ruta; 
    }

    function veritas() 
    { 
        $aa="ok"; 
        $xx="ok2";

        return $aa; 
        return $xx; 
    }

    function create_d() 
    {
        $r=$this->veritas(); 
        echo $r->$aa; 
        echo $r->$xx; 
    }
}

我有这个类,我尝试在函数 create_d 中执行函数 veritas,但我想将函数 veritas 的值显示为单独的值,在最后执行类时在 create_d 中显示 $aa 和 $xx 的值

<?php
    $a=new dir_exam("db_p");
    echo $a->create_d();
?>

但我最终无法得到这个,我不知道这是不可能的还是什么,这是我的问题,提前谢谢

【问题讨论】:

  • 你不能连续有多个return 语句(你“可以”,但只有第一个会执行)。这段代码中还有很多其他没有多大意义的小东西,我建议在手册上的OOP basics 处循环。
  • 有一种方法可以有多个返回值(它被称为 php 生成器),但我不认为您正在尝试实现这一点。目前,它只会返回 $aa。您的 veritas 函数应该返回一个简单的数组。我想这完全可以满足您的需求。

标签: php function class


【解决方案1】:

一个函数中不能有 2 个或多个返回值。

如果你像 OOP 一样使用变量 $aa 和 $xx,你必须在类中创建 2 个变量

class dir_exam 
{    
    public $db_ruta;
    public $aa; // <--
    public $xx; // <--
}

之后,您需要更改函数 veritas 以传递属性值

   function veritas() 
   { 
        $this->aa="ok"; 
        $this->xx="ok2";
    }

现在在你的函数中你可以这样调用:

function create_d() 
{
    $this->veritas(); 
    echo $this->aa; 
    echo $this->xx; 
}

【讨论】:

  • 我同意将$aa 和$xx 设置为属性,但veritas() 不会返回任何内容,因此$r 将是未定义的。我认为create_d() 也应该只引用$this-&gt;aa 等。
  • 我重构了函数create_d(),再试一次
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-06
  • 2018-12-23
  • 2021-06-21
  • 2012-07-01
  • 1970-01-01
  • 2023-01-18
  • 1970-01-01
相关资源
最近更新 更多