konstanta v class
15 příspěvků
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
V souboru Smarty.class.php je následující: class Smarty { var $template_dir = "/3w/chytrak.cz/d/domena/template"; ... } Mám definovanou konstantu SMARTY_TEMPLATE_DIR, jejíž hodnota je zadaná v konfiguračním souboru stránek (/3w/chytrak.cz/d/domena/template). Nevím jak přiřadit tu konstantu k $template_dir v class. Ona asi bude lokální nebo co. Global nefunguje ani na konstanty ani na proměnné. Já s class moc pracovat neumím. Kde je chyba?
-
v prvom rade sa neuc pouzivat class v php4, ale rovno prejdi na php5. tu tvoju otazku som velmi nepochopil. Mám definovanou konstantu SMARTY_TEMPLATE_DIR. Toto chapem tak, ze si dakde urobil define('SMARTY_TEMPLATE_DIR','...'); jejíž hodnota je zadaná v konfiguračním souboru stránek (/3w/chytrak.cz/d/domena/template) toto nechapem co je v tom template? to akoze tak je cesta /3w/chytrak.cz/d/domena/template? mozno som to pochopil: mam 2 varianty ako som to pochopil> 1) (dufam ze nie) ty chces zistit to /3w/chytrak.cz/d/domena/template z dakeho suboru z tade. pritom stranka ti bezi uplne inde, a ty potrebujes vytahat conf. subory z tade.. potom musis ukladat cestu niekde v zakladnom konf. subore este na zaciatku... len neviem co to ma spolocne s objektmi. 2) mozno chces toto: define('SMARTY_TEMPLATE_DIR','/3w/chytrak.cz/d/domena/template'); class Smarty { private $template_dir = SMARTY_TEMPLATE_DIR; ... }
-
PHP 5 nepoužívám jednoduše proto, že na webzdarma je PHP Verze 4.3.4 Správně si pochopil to 2.) Prostě jednoduše potřebuju přiřadit tu konstantu (kterou jsem si definoval a jejíž hodnota je uložena v konfiguračním souboru stránek) proměnné $template_dir. Smysl celé věci spočívá v tom, že pak budu mít jenom ten jeden konfigurační soubor a kvůli nastavení SMARTY se nebudu muset hrabat někde jinde. To řešení které navrhuješ ale nefunguje - proto se na to taky ptám.
-
<? define('SMARTY_TEMPLATE_DIR','/3w/chytrak.cz/d/domena/template'); class Smarty { private $template_dir = SMARTY_TEMPLATE_DIR; public function __construct(){ echo $this->template_dir; } } $s = new Smarty(); ?> tento skript mi vypise /3w/chytrak.cz/d/domena/template mozno je cas na prejdenie na php5 npr. www.php5.cz
-
Tak mě to nevypíše nic :o(
-
Opravuji. Vypíše to následující chybovou hlášku: Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in /3w/chytrak.cz/d/domena/test.php on line 7
-
to bude tym private a public, ..
-
a skus namiesto __construct() pouzit Smarty
-
tak to prirad v konstruktoru. class a { var $cosi; function a() { $this->cosi = 'tady si prirad, co chces'; } } $objekt = new a(); echo $objekt->cosi; # vypise tady si prirad, co chces'; netreba php5, staci cist navody.
-
teoreticky by si asi mohol urobit daco taketo: class Smarty { var $template_dir = "/3w/chytrak.cz/d/domena/template"; ... } $s = new Smarty(); $s->template_dir = SMARTY_TEMPLATE_DIR; akurat to nemozes pouzit v konsturktore.
-
Jako promiň, ale co je tohle za radu? Mě jde právě o to, abych dostal tu konstantu do konstruktoru. Natvrdo tam tu cestu můžu napsat vždycky, ale já jí chtěl mít v konfiguračním souboru, abych jí nemusel složitě hledat kdesi v konstruktorech až zapomenu, kde se na stránkách co nastavuje.
-
tak by to slo takto: class a { var $cosi; function a($adr='') { $this->cosi = $adr; } } $objekt = new a('http://...'); případně z té adresy někde v konfiguráku udělat konstantu nebo proměnnou a tu pak předat místo řetězce...
-
No jo, ale já nevím kde všude se ta třída Smarty používá. Proto jsem chtěl upravit jenom jí ale takhle bych to musel přepsat všude v systému, kde ten objekt volám.
-
No, teď jsi mě zmátl, co vlastně potřebuješ? zkoušel jsem toto" define('KONSTANTA', 'to neni blbost'); class a { var $cosi="blbost"; function a() { $this->cosi = KONSTANTA; } } $o = new a(); echo $o->cosi; a vypsalo to hodnotu konstanty, možná bude problém v řádku $this->cosi = KONSTANTA; kdy proměnnou ve třídě musíš adresovat jako $this->cosi ne jako $cosi. Ne?
-
No ano, to je v podstatě ono, ale nefunguje to. K pochopení toho co přesně chci by bylo nutno vidět soubor Smarty.class.php, který je jistě známý všem co smarty používají. Prostě a jednoduše bych potřeboval aby fungovalo: soubor Smarty.class.php: class Smarty { var $template_dir = konstanta_co_jsem_zaregistroval_podle_configu; ... } Jinak ten soubor obsahuje funkcí strašně moc v nichž je jak správně uvádíš: ... $this->cosi = $this->template_dir; ... spoustakrát a já bych musel tu konstantu odkazovat ve všech případech, což je složité až nereálné.