php中公共构造的访问函数

php中公共构造的访问函数,php,class,construct,Php,Class,Construct,我有一个php程序,其中有一个函数和一个类,其中包含一个公共构造函数,我需要从公共构造内部调用该函数,如下代码所示: class test { public $var0 = null; public function __construct() { $this->var0 = Tfunction('lol'); } } function Tfunction ($String) { $S = ($String . ' !');

我有一个php程序,其中有一个函数和一个类,其中包含一个公共构造函数,我需要从公共构造内部调用该函数,如下代码所示:

class test {

    public $var0 = null;

    public function __construct() {

        $this->var0 = Tfunction('lol');

    }

}

function Tfunction ($String) {

    $S = ($String . ' !');

    return $S;

}

$j = new test();

echo($j);
当我运行这个函数时,它没有运行这个函数,我尝试了所有的事情,但它没有什么要放“lol!”在我的公共变量中,我如何才能使其工作


需要注意的是,我没有收到任何错误,告诉我该类无法访问fontion或类似的内容,只是似乎该行被忽略,并且$var0以null存档。

您的代码有几个问题,请参阅文档:

错误:

  • 类测试()必须是类测试
  • $this=t函数('lol');必须是echo t函数('lol');并且$this必须从不分配
  • 固定代码为:

    Class test{
    
        public $var0 = null;
    
        public function __Construct() {
    
           echo Tfunction('lol');
    
        }
    
    }
    
    function Tfunction ($String) {
    
        $S = ($String . ' !');
    
        return $S;
    
    }
    
    $a = new test();
    

    类声明是错误的。您需要创建类的对象

    <?php   
    class test {
    
        public $var0 = null;
    
        public function __Construct() {
       echo Tfunction('lol');
    
    
    
        }
    
    }
    
    $obj=new test();
    
    function Tfunction ($String) {
    
        $S = ($String . ' !!');
        return $S;
    
    
    }
    ?>
    

    我运行您的代码时输出的错误是

    '类测试的对象无法转换为字符串'

    有两种方法可以解决这个问题,你可以使用其中一种

  • 而不是行
    echo($j)将其更改为
    echo($j->var0)
  • 现在不再试图打印对象,而是从构造函数中设置的对象打印公共变量

  • 向对象添加一个_toString()方法,并使用该方法输出var0字段

    class test {
    
      public $var0 = null;
    
      public function __construct() {
    
        $this->var0 = Tfunction('lol');
    
      }
    
      public function __toString(){
    
        return $this->var0;
    
      }
    
    }
    
    function Tfunction ($String) {
    
      $S = ($String . ' !');
    
      return $S;
    
    }
    
    $j = new test();
    
    echo($j);
    
  • 现在,当您尝试使用
    echo($j)打印对象时它将使用分配给输出变量的_toString()


    这两个修复都意味着“哈哈!”是输出到我的浏览器窗口的,正如最初预期的那样。

    Im verey sorrey我写问题时手头没有编译器,上面提到的小错误在实际程序中不存在,我无法上传,因为它包含私有元素,所以我制作了一个简化版本。我现在已经更正了代码,问题是相同的XD。您的最后一行不应该尝试打印出公共变量$var0吗。echo$j->var0;我的问题是,由于某种原因,函数Tfunction从未执行过,我不明白为什么不执行。我试着用publics之类的东西。真正令人困惑的是,当我试图在没有类的情况下调用函数时,我不能调用函数,当我在任何其他地方调用Tfunction时,它都会正常工作。但是我希望$var0等于创建Tfunction时Tfunction的返回值,而Tfunction应该有一个返回值而不是回音。对不起,luis…我忘了更新,我们需要在构造函数中使用echo,在函数中使用return。