Autor | Zpráva | ||
---|---|---|---|
obi Profil * |
#1 · Zasláno: 24. 6. 2010, 14:52:40
Ahoj,
nedávno jste mi poradili, abych se podíval na namespaces. A tak zkouším a už mám první problém :-) <?php namespace Web; const ADDRESS = "http://".$_SERVER["HTTP_HOST"]; function helloWorld(){ echo "Hello world!"; } ?> hlásí chybu Parse error: syntax error, unexpected '.', expecting ',' or ';' ... on line 4. Dokonce i když dám const ADDRESS = "ahoj"."bla"; tak hlásí chybu stejnou. To vypadá jakoby PHP neumělo spojit dva řetězce :-( Nevíte prosím co s tím? Pouštím to na localhostu s PHP 5.3.1. Díky |
||
Alphard Profil |
#2 · Zasláno: 24. 6. 2010, 15:03:53
|
||
obi Profil * |
#3 · Zasláno: 24. 6. 2010, 15:13:05
metodou pokus/omyl jsem zjistil, že přes define konstanty do namespace definovat nejdou:
<?php //web.php namespace Web; define('ADDRESS', "ahoj"); ?> <?php //index.php include "web.php"; echo Web\ADDRESS; ?> hlásí Fatal error: Undefined constant 'Web\ADDRESS' in index.php on line 4. Pomocí const to ale funguje jak má a vypíše se "ahoj". Zkoušel jsem i přidat zpětné lomítko před Web, ale výsledek je stejný. |
||
Alphard Profil |
#4 · Zasláno: 24. 6. 2010, 15:32:43
Omlouvám se, ten váš kód je v pořádku, neuvědomil jsem si to (Example #2 global functions/constants fallback inside a namespace). Ale jak tam dostat proměnnou nevím.
Pokud jde o define, viz http://www.php.net/manual/en/function.define.php#90282, musí se uvést namespaces. Ale jestli to vezme proměnnou vážně nevím. Jestli to vyřešíte, tak sem pak prosím napište. |
||
__construct Profil |
#5 · Zasláno: 24. 6. 2010, 15:39:08 · Upravil/a: __construct
obi:
Keď chceš definovať koštantu v mennom priestore musíš spraviť toto: <?php //web.php namespace Web; define('Web\ADDRESS', "ahoj"); define(__NAMESPACE__ .'\ALEBO', "Takto"); //edit: doplnený preklep :-) ?> |
||
obi Profil |
#6 · Zasláno: 24. 6. 2010, 15:50:46 · Upravil/a: obi
__construct: moc díky, teď už to jede tak jak potřebuju :-)
Alphard: tohle funguje už úplně bez problémů ;-) <?php namespace Web; define(__NAMESPACE__.'\ADDRESS', "http://".$_SERVER["HTTP_HOST"]); ?> EDIT: ještě bych měl otázku ke konvencím, podle konvencí by slovo "Web" mělo začínat velkým, nebo malým písmenem? |
||
Majkl578 Profil |
#7 · Zasláno: 24. 6. 2010, 16:00:44 · Upravil/a: Majkl578
Alphard:
„Navíc takto se konstanta zapisuje uvnitř třídy.“ To není tak úplně pravda. PHP 5.3 právě umožňuje zapsat obyčejnou konstantu (ne třídy) i pomocí const: const FOO = 'Hello'; obi: „ještě bych měl otázku ke konvencím, podle konvencí by slovo "Web" mělo začínat velkým, nebo malým písmenem?“ Doporučuji stejnou konvenci jako u názvů tříd, tj PascalCase." |
||
Alphard Profil |
#8 · Zasláno: 24. 6. 2010, 16:06:21
Majkl578:
„PHP 5.3 právě umožňuje zapsat obyčejnou konstantu (ne třídy) i pomocí const:“ Viz „Omlouvám se, ten váš kód je v pořádku, neuvědomil jsem si to (Example #2 global functions/constants fallback inside a namespace).“ S PHP 5.3 jsem ještě moc nepracoval, tak se omlouvám ještě jednou. |
||
Časová prodleva: 15 let
|
0