在PHP中需要一些关于$ this的解释?

Ali*_*ssa 2 php oop pdo

我有点困惑:

我正在使用OOP开发一个php项目.

我有一个带有构造函数的类,如下所示:

public function __construct(){
    include("myconn.php");
    $myconnect = new connect();
    $this->conn = new PDO('mysql:host=localhost;dbname='. $myconnect->db, $myconnect->user, $myconnect->pass);
    $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);    
 }
Run Code Online (Sandbox Code Playgroud)

我没有private $conn;在类构造函数之前放置,我能够conn在我的方法中使用变量,如下所示:$q = $this->conn->query($sql) or die("failed!");

注意到在我关注的示例中有一个private $conn;我很困惑为什么没有弹出错误.

有人可以解释一下吗?关于$这个范围的一点解释也会很棒.

Mat*_*t S 6

如果没有定义类属性但第一次为其赋值,则会将其作为公共属性添加到对象中.通过将其明确设置为私有,您将失去对象外部的访问权限.

Class A {
   public function __construct() {
       $this->foo = 'Hi';
   }
}

$a = new A();
echo $a->foo; // Outputs 'Hi';

Class B {
   private $bar;
   public function __construct() {
       $this->bar = 'Howdy';   // Accessible only to instances of B
   }
}

$b = new B();
echo $b->bar;  // Error accessing a private property
Run Code Online (Sandbox Code Playgroud)

这也适用于任何类定义之外:

$object = new \stdClass();
$object->property = 'abc';    // Automatically public
echo $object->property;       // Outputs 'abc'
Run Code Online (Sandbox Code Playgroud)

将数组转换为对象也会自动创建公共属性:

$object = (object) [
    'property' => 'abc'
];
echo $object->property;       // Outputs 'abc'
Run Code Online (Sandbox Code Playgroud)