Я кодирую свою первую фабрику объектов, и мне интересно, есть ли какие-либо недостатки в передаче одного объекта в другой при создании второго объекта, а затем сохранение первого объекта во втором для использования позже?Можно ли передать объект класса другому классу? PHP
Пример:
class main
{
public $connection = array();
// various other useful functions that should be loaded on every page here
// these other functions would be convenient to have avail for
// new objects in different classes
function dbconnect($db) {
if(!isset($this->connection[$db])) {
switch($db) {
case "users":
$connection = @mysql_connect(info,info,info);
$db_select = @mysql_select_db(info,$connection);
$this->connection[$db] = $connection;
break;
case "ads":
$connection = mysql_connect(info,info,info);
$db_select = mysql_select_db(info,$connection);
$this->connection[$db] = $connection;
break;
default:
die($db . " is not a recognized database.");
break;
}
}
return $this->connection[$db];
}
// note how i pass $this into the new object in this function
function create($class,$params=null) {
if(!class_exists($class) && !$this->load($class)) {
die($class . " is not a recognized class.");
}else{
return new $class($this,$params);
}
}
function load($file) {
$file = $_SERVER['DOCUMENT_ROOT'] . "/classes/" . $file . ".class.php";
if(file_exists($file)) {
return require_once($file);
}else{
return false;
}
}
}
class secondary {
private $connection;
private $mainObj;
private $params;
function __construct($mainObj,$params) {
$this->mainObj = $mainObj;
$this->params = $params;
$this->connection = $mainObj->dbconnect('users');
}
}
Как вы видите здесь, любой класс, созданный на заводе удобно имеет возможность подключения к БД MySQL, если класс требует (и других общих/полезных функций) ... без необходимости использовать глобалы или передавать много вещей.
Является ли это стабильным способом? Я новичок и могу использовать какую-то хорошую теорию/учебу о том, почему это неправильно - если это так.
Вы можете прочитать о Dependency Injection. http://en.wikipedia.org/wiki/Dependency_injection – jason