after reading the answers, I rewrote my question.
Say I have a theoretical php application that uses objects that do different things. For each page loaded by the application, different scripts will be launched.
Now I have created a simple PHP script that creates a simple object. (all this is compiled, I'm just trying to figure it out before I code it)
$user = new userClass($db);
$user->login($credentials);
everything is fine and I can even repeat the procedure several times after creating the user class
$user = new userClass($db);
$user->login($credentials);
...
$user->login($credentials2);
Now imagine if these 2 parts are divided into 2 different php files.
file1:
$user = new userClass($db);
$user->login($credentials);
file2:
$user->login($credentials2);
include file1
include file2
if they execute in order, everything is fine, but if they are not, or if file1 is not included at all ...
file2:
$user->login($credentials);
file1:
$user = new userClass($db);
$user->login($credentials2);
include file2
include file1
... , php, , .
main file:
$user = new userClass($db);
file1:
$user->login($credentials);
file2:
$user->login($credentials2);
( , ) file1 file2 file2 file1 include file2
file1 2 , , , 1 2 ?
main file:
$user = new userClass($db);
, , , , , , ?
.
-, ( , ):
file1:
if(!is_object($user)){
$user = new userClass($db);
}
$user->login($credentials);
file2:
if(!is_object($user)){
$user = new userClass($db);
}
$user->login($credentials2);
, , , ?
...
class loader {
private $objects;
private $db;
function __construct($db){
$this->objects = array();
$this->db = $db;
}
function __get($name){
if(!isset($this->objects[$name])){
return $this->objects[$name] = new $name($this->db);
}
}
}
main file:
$loader = new loader($db);
file1:
$loader->user->login($credentials);
file3:
$loader->user->login($credentials3);
file2:
$loader->user->login($credentials2);
file4:
$loader->user->login($credentials4);
, , , - , , , $db.
, ()
script :
$user = new userClass($this->db);
$user->login($credentials);
$form = new formClass($_POST);
$form->process($info);
2 2
class loader {
private $objects;
private $db;
function __construct($db){
$this->objects = array();
$this->db = $db;
}
function getuserclass($name){
if(!isset($this->objects[$name])){
return $this->objects[$name] = new $name($this->db);
}
}
function getformclass($name){
if(!isset($this->objects[$name])){
return $this->objects[$name] = new $name($_POST);
}
}
}
main file:
$loader = new loader($db);
file1:
$loader->getuserclass('user')->login($credentials);
file3:
$loader->getformclass('form')->process($info);
.
?