Autor | Zpráva | ||
---|---|---|---|
sopel Profil * |
#1 · Zasláno: 26. 9. 2015, 20:19:17
Dobrý den,
chci se zeptat, zda by mi nedokázak někdo uvést příklad, jak lze používat třídy ve funkích jiných tříd bez toho, aniž bych musel v každé třídě znova volat new Mysql(). Tedy, mám například soubor /core/mysql.php class MySQL() .. __construct($host, $user..) ... function DBquery(..) { ... } /core/user.php class User { function getUserDat ( $user_id =0 ) { ...$MYSQL->DBquery(.. (mysql trida z /core/mysql.php) } } /core/websettings.php class WebSettings { function countOfUsers(){ $mysql->DBquery("SELECT COUNT(*.... opet mysql.php nebo $user-> opet user.php } nevím jak konkrétně funguje autoload. chci si tedy udělat vlastní loader.php, který by načetl všechny třídy v /core/, ale nevím jak udělat, aby byly ty třídy propojené.. děkuji |
||
Keeehi Profil |
#2 · Zasláno: 27. 9. 2015, 23:04:48
class MySQL { function __construct($host, $user..) function DBquery(..) { ... } } class User { private $mysql; function __construct(MySQL $mysql) { $this->mysql = $mysql; } function getUserDat ( $user_id =0 ) { $this->mysql->DBquery(..); } } class Application { function run() { $mysql = new MySQL('xxx','xxx', ...); $user = new User($mysql); } } Říká se tomu Dependency injection. |
||
Časová prodleva: 9 let
|
0