PHP-可通过类访问的私有变量

PHP-可通过类访问的私有变量,php,class,private-members,Php,Class,Private Members,我正在处理一个PHP类,它看起来像这样: <?php class xyz{ public $car1; public $car2; private $owner; public function __construct ($type){ $this->car1 = $type; $this->owner = "John";

我正在处理一个PHP类,它看起来像这样:

<?php
    class xyz{
           public $car1;
           public $car2;
           private $owner;

            public function __construct ($type){
              $this->car1 = $type;
              $this->owner = "John";
              return $this->owner();
          }
            private function owner(){
             return "Owner of ".$this->car1." is ".$this->owner;
          }
如何实现预期结果,如何保护私有变量

所有的帮助和建议将不胜感激

谢谢

  • 构造函数不应该返回任何值。类构造函数应该在创建新实例时初始化对象(例如,当您编写
    $car=new xyz(“sedan”);
    时,因此您返回的任何内容都是无效的。在类中创建其他方法以返回值
  • 如果要回显所有者,请将
    owner
    方法设置为public,并执行`echo$car->owner();”。该方法返回一个字符串,然后回显该字符串。简单
  • 直接回显对象会导致PHP7中出现错误,可能您正在运行一个旧版本的php,它返回您看到的内容,如果调用
    var\u dump($car);
    ,就会发生这种情况。如果您想控制对象如何转换为字符串,则需要重写
    \uu toString
    方法(请参阅)
  • 属性和方法可见性关键字工作正常,如果尝试在不更改可见性的情况下使用
    $car->owner
    $car->owner()
    ,您应该会看到错误
  • 构造函数不应该返回任何值。类构造函数应该在创建新实例时初始化对象(例如,当您编写
    $car=new xyz(“sedan”);
    时,因此返回的任何内容都不会返回。在类中创建其他方法以返回值
  • 如果要回显所有者,请将
    owner
    方法设置为public,并执行`echo$car->owner();”。该方法返回一个字符串,然后回显该字符串。简单
  • 直接回显对象会导致PHP7中出现错误,可能您正在运行一个旧版本的php,它返回您看到的内容,如果调用
    var\u dump($car);
    ,就会发生这种情况。如果您想控制对象如何转换为字符串,则需要重写
    \uu toString
    方法(请参阅)
  • 属性和方法可见性关键字工作正常,如果尝试在不更改可见性的情况下使用
    $car->owner
    $car->owner()
    ,您应该会看到错误

  • 您不能从构造函数返回。只需回显
    $car->owner()
    ,或者可能使用
    \uuToString()
    你不能回显一个类,你应该在它里面有一个函数。@p你可以回显一个类,但是你需要定义
    \u toString
    魔法方法。哦,很高兴知道,谢谢!
    保护私有变量
    什么?你不能从构造函数返回。只要回显
    $car->owner()
    或者可能使用
    \u toString即可()
    你不能回显一个类,你应该在它里面有一个函数。@Phiter你可以回显一个类,但是你需要定义
    \uu-toString
    魔法方法。哦,很高兴知道,谢谢!
    保护私有变量
    免受什么影响?@3,我使用的是print\r,不是echo。但是\uu-toString有效!有什么建议如何保护私有数据不被获取吗在类外访问?在类外不能访问私有数据,这是OOP基础。@3,我使用的是print\r,而不是echo。但是,toString可以工作!有什么建议可以防止私有数据在类外访问?在类外不能访问私有数据,这是OOP基础。
      <?php
        $car = new xyz("Sedan");
        echo $car; //Expected result: Owner of Sedan is John.
       ?>
    
     Object ( [car1] => Sedan [car2] => "" [owner:xyz:private] => John )