Md *_*iam 5 php oop instantiation
第一个文件:
class Class_one {
public function __construct() {
}
public function show_name() {
echo "My Name is Siam";
}
public function show_class() {
echo "I read in class 7";
}
}
Run Code Online (Sandbox Code Playgroud)
第二个文件:
<?php
require_once './Class_one.php';
class Class_two {
public $class_one;
public function __construct() {
$aa = new Class_one();
$this->class_one = $aa;
}
public function history() {
$this->class_one->show_name();
}
}
$ab = new Class_two();
$ab->history();
Run Code Online (Sandbox Code Playgroud)
如果我不在 class_two 中实例化 class_one 并将 class_one 扩展到 class_two 会发生什么?有什么区别吗?
这里只有一个潜在的问题:Class_two无法直接访问Class_one私有/受保护的方法和变量。这可能是一件好事(封装是一个类执行某些特定任务并且您不希望子级干扰它),但它也可能意味着您无法获取所需的数据。
我建议您作为Class_two依赖注入(如您的示例所示),但是
class Class_two {
public $class_one;
public function __construct(Class_one $class) {
$this->class_one = $class;
}
}
Run Code Online (Sandbox Code Playgroud)