21. září bude sraz! Od 18.00 v restauraci Tradice v Praze u Anděla
Autor Zpráva
sopel
Profil *
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
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0