Portál AbcLinuxu, 5. listopadu 2025 05:15
Řešení dotazu:
new \PDO(...);
use.
### index.php ###
define('PATH', dirname(dirname(__FILE__)).'/code');
function __autoload($class){
$files = PATH.'/'.strtr($class, '_\\', '//').'.php';
require_once(strtr($class, '_\\', '//').'.php');
}
new MySQL();
### library/MySQL.php ###
namespace library;
class MySQL{
public function __construct($registry){
$registry->pdo = new /PDO(DB_TYPE.':host='.HOST.';dbname='.NAME.', USER, PASS);
}
new \PDO, nikoliv new /PDO.$files. Ta by navíc měla být jednotného čísla.$registry bys měl dělat tam, kde voláš new nebo případnou factory metodu. Takle zabíjíš výhody dependency injection. Tedy vytvoř kontejner, který dostane konfiguraci a podle ní vytvoří na požádání třídy. Je to celkem jednoduchá úloha na použití magické metody __get() a veřejných vlastností objektu (Hint: V konstruktoru si ulož konfiguraci, __get($něco) koukne do konfigurace, zavolá uvedenou factory metodu a nastaví $this->něco).MySQL musíš vytvářet se správným namespace. Tedy: new \library\MySQL(), nebo přidat vhodný use.PATH použij vhodnější název, je trochu matoucí.Dobry den. A jak se v takovem pripade pouziva "use" pro "\" ?new \PDO(...);
use \vyhodi error. Dekuji
use \PDO;Používají se třídy, nikoliv namespace. PHP nemá mechanismus, jak vypsat všechny třídy v daném namespace, neboť jsou načítány až na požádání. Můžeš získat jen třídy už načtené.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.