Jak zevnitř? Pokud by jsi měl třeba třídu na MC RCON server, tak si nějaké konstanty nebo věci, co se nemění můžeš dát rovnou ve třídě natvrdo, ale zrovna u téhle databáze, to je špatnej přístup, protože změna údajů od databáze se rovná změně třídy. Třída musí fungovat sama o sebe, bez toho aby bylo nutné ji přepisovat, když ji použiješ jinde. Viz třeba můj banlist nebo webshop, zadáš údaje při instalaci, uloží se to do cfg a pak se to přes konstruktor jednou dostane do té třídy a je to. Pak už ji jenom prostě používáš.

Ono taky v tomhle případně je to moc nedává smysl, protože příst třídu Database am ít tam jenom připojení a pak alias ke ->query() je zbytečný pro to dělat třídu. V tom Database by sis měl udělat metody, který pak jenom voláš.
Viz třeba můj serverlist, kde mám momentálně asi 20 funkcí (ve třídě se jim říká metody), kterýma získává informace, pak jenom v kódu napíšu $db = new Database(...); a var_dump($db->getServers()); a mám pěkně v poli všechny údaje o všech serverech. O tohle totiž jde. Zpřehledňuje a upravuje kód. Věci z jednoho celku pěkně dáš do jedné třídy a tu pak jenom použiješ v hlavním souboru. Navíc ji můžeš použít kolikrát chceš a podobně. Stejně jako na dababázi si uděláš třídu na přihlašování a podobně.
Kód: Vybrat vše
<?php
namespace App;
use Nette, Model, Nette/Database/Connection, Nette/Caching/Cache;
class Database extends Nette/Object {
private $db;
private $sf;
private $cache;
private $itemsPerPage;
public function __construct(Nette/Database/Connection $db, $itemsPerPage, $cache) {
$this->db = $db;
$this->sf = new Nette/Database/SelectionFactory($db);
$this->cache = $cache;
$this->itemsPerPage = $itemsPerPage;
}
public function getServers($sort = 'passivePoints', $order = 'DESC', $page = 1, $search = null, $filterString = null, $filterNumber = null) {
$args = array();
if (!empty($filterString)) $args['version_string'] = $filterString;
if (!empty($filterNumber)) $args['version_number'] = $filterNumber;
$args['sl_servers_live.status'] = 'Online';
return $this->sf->table('sl_servers_live')
->select('*')
->where($args)
->where('sl_servers_live.name LIKE ? OR
sl_servers.full_ip LIKE ? OR
sl_servers_live.version_string LIKE ? OR
sl_servers_live.version_number LIKE ? OR
sl_servers_live.map LIKE ?', "%$search%", "%$search%", "%$search%", "%$search%", "%$search%")
->order($sort . ' ' . $order)
->page($page, $this->itemsPerPage)
->fetchAll();
}
public function getServersCount($search = null, $filterString = null, $filterNumber = null) {
...
}
...
Tak mě pak ještě napadlo, třeba jak mám private $itemsPerPage; tak to je dobrej příklad pro tebe, co můžeš dát přímo ve třídě, normálně tam dáš private $itemsPerPage = 50; a hotovo. Nemusíš to tam zadávat při vytváření. A teď se mě určitě zeptáš, proč to teda tak nemám, co?

Já to věděl.
No já to tak nemám, protože $itemsPerPage používám i na hodně dalších místech, takže kdybych to chtěl změnit, tak to musím přepsat na dalších 150 místech, takže to mám definovaný právě v cfg a do všech tříd, kde to používám to dávám přes konstruktor. Přepíšu v cfg a automaticky mám všude novou hodnotu a hlavně všude 100% stejnou. Ale pokud by jsi to používal jenom tady, tak to můžeš dát přímo na tvrdo, já to tak měl za začátku taky.