Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP5] Problem z namespace
Forum PHP.pl > Forum > PHP > Object-oriented programming
Seth
Podczas wywolywania tego kodu:
[php:1:57d7d4a413]namespace NSTest
{
class TestClass
{
public $intId = 0;
}
}

$objTest= new NSTest::TestClass;[/php:1:57d7d4a413]

wystepuje nastepujacy blad:
Cytat
Parse error: parse error, unexpected T_STRING in <sciezka> on line 2


Wedlug tego: http://ny1.php.net/introtophp5.pdf wszystko powinno dzialac.


Co moze byc przyczyna tego bledu ?
Jabol
Pewnie to, że w php usunięto name spacy (bo jakieś tam robiły problemy) już jakiś czas temu. Nie słyszałem, żeby wróciły, więc to penie dlatego.
Seth
shit sad.gif
Dzieki za odpowiedz.
shw
tak - niestety usunieto - znaleziono bledy.
na pewno nie bedzie ich w php5
DeyV
Zeev Suraski stwierdził, że nie bedzie, ponieważ jest z tym sporo problemów.
Co prawda dodaje on też, że być może znajdzie się ktoś, kto się tego podejmie (słychać ironię w głosie winksmiley.jpg ) ale osobiście nie sądzi by tak się stało.
Trza se radzić inaczej...
shw
mozna probowac je emulowac za pomoca klas...
Seth
Nie wiem czy o tym samym myslimy ale wpadlem na taki pomysl...
Otoz mozna bylo by to zrobic tak, ze gdy tworzymy namespac np: Test
to wszystkie klasy, ktore sie w nim znajduja mialy by w pamieci php dodane do poczatku Test_. Czyli np:
[php:1:8a5d6faacd]namespace Test
{
class JakasKlasa
{
}
}[/php:1:8a5d6faacd]
w pamieci parsera mialy by postac: Test_JakasKlasa. Lecz podczas odwolywania sie do nich mielibysmy standardowo:
Test::JakasKlasa
i to parser by wiedzial, ze nalezy to co podalismy zamienic na Test_JakasKlasa i zlinkowac z tym co ma w pamieci.
DeyV
nie wiem doklanie o co chodziło z tym błedęm. Był to jednak ponoć dosyć poważny błąd. Więcej pisał o nim koleś z WebCity.pl
A w tym przypadku - jełśi by chodziło tylko o to, to powinny wystarczyć prefiksy w nazwach klas, po co wiec komplikować język?
Vdeth
No rzeczywście słabo że poszły sie walić przestrzenie nazw... :/ A błąd nie był jeden a mnustwo, co przeważyło że namespace nie będze, a szkoda.. No nic zostają klasy biggrin.gif .
shw
sam nie korzystalem, ale podobno mozna emulowac namespaces w taki sposob:
[php:1:b8752ab01c]<?php
class jakasklasa {
static var $costam;

static function nazwafunkcji () {
//tutaj funkcja
}

}
?>
[/php:1:b8752ab01c]

i podobnoz tak mozna sobie uzywac namespaces, ale jak mowie - ja nie korzystalem i pewien nie jestem

[KaMeLeOn]: OSTRZEZENIE ! Prosze uzywac bardziej tradycyjnych nazw funkcji...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.