Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: global, zle ?
Forum PHP.pl > Inne > Hydepark
nasty
Chcialbym sie dowiedziec czmu wszyscu na forum tak bardzo nie lubia global w klasach i funkcjach.
Jak oladalem sobie kod typo3 to tam jest pelno globalow zreszta tak jest w b. duzej ilosci skryptow ...
Cysiaczek
Globale są "be" z kilku powodów. Jednym z ważniejszych jest to, że wiążą ze sobą w sposób bardzo ścisły elementy aplikacji, które powinny byc maksymalnie niezależne. potem masz problemy np. z przeniesieniem kodu do innego projektu.
Z takich bardziej przyziemnych powodów, to globale mają tę wadę, że mogą zostac nadpisane w miejscu najmniej spodziewanym i może być kłopot.
nasty
no ale jak robie sobie program i nie mam zamiary zeby jego kod byl framewokiem albo uzywany gdzies indziej, to chyba nie jest "be" ?
Cysiaczek
No dobrze. Możesz tak zrobić i będzie działało smile.gif Po co jednak pisać klasy, używać obiektów? Jedna z podstawowych zasad OOP jest zasada hermetyzacji - wlicza się w to również stosowanie zmienych globalnych.
Żeby nie było, że zmienne globalne są zupełnie nieużywane, to podam przykład singletona, który też jest pewnego rodzaju daną globalną. Ma tylko trochę mniej wad smile.gif
Ludvik
Odpowiedz sobie na takie pytania:
- Jak się upewnisz, czy zawartość zmiennej globalnej jest prawidłowa?
- Czy będziesz potrafił zachować spójność danych w tej zmiennej?
- Gdzie będziesz szukał błędów związanych z tą zmienną, skoro wszędzie będziesz miał do niej całkowity dostęp?

Myślę, że nie bez podstaw nikt nie toleruje używania zmiennych globalnych. W przypadku zmian związanych z tą zmienną, cały skrypt Ci się sypie...

Cytat
no ale jak robie sobie program i nie mam zamiary zeby jego kod byl framewokiem albo uzywany gdzies indziej, to chyba nie jest "be" ?

To czy coś jest "be", czy nie, nie określa zastosowanie kodu, a jego jakość.

Cytat
Jak oladalem sobie kod typo3 to tam jest pelno globalow zreszta tak jest w b. duzej ilosci skryptow ...

Oj tak, w bardzo dużej ilości skryptów to znajdziesz. Teraz popatrz jak ludzie się rzucili na php, dzięki jego dostępności i prostocie. Popatrz jakie posty znajdują się czasem w przedszkolu... To, że dużo ludzi tego używa, nie znaczy, że jest to prawidłowe zachowanie.
nasty
Cytat
Jak się upewnisz, czy zawartość zmiennej globalnej jest prawidłowa?

tak samo jak sie upewniam z narmalnymi zmiennymi, a pozatym w globalach to zazwyczaj jest link to $_DB, itd.
Cytat
Oj tak, w bardzo dużej ilości skryptów to znajdziesz. Teraz popatrz jak ludzie się rzucili na php, dzięki jego dostępności i prostocie. Popatrz jakie posty znajdują się czasem w przedszkolu... To, że dużo ludzi tego używa, nie znaczy, że jest to prawidłowe zachowanie.

Ale chyba TYPO3 nie jest zle, i nie jest robione przez amatorow ?

ja nie probuje udowodnic ze global sa dobre, ale ja ich uzywam np http://crystalpage.sf.net/code , tam zobaczysz o co mi chodzi z globalami jak zobaczysz plik init.php i pliki z katalogu cpLib, i chce sie dowiedziec czy oz tak zle sa czy poprostu nie lubiane bo nie lubiane i koniec tongue.gif.
Ludvik
Cytat
Cytat
Jak się upewnisz, czy zawartość zmiennej globalnej jest prawidłowa?

tak samo jak sie upewniam z narmalnymi zmiennymi, a pozatym w globalach to zazwyczaj jest link to $_DB, itd.

Tak sądzisz? Zmienne globalne nie mają żadnej kontroli typów. Przekazując zmienną do metody możesz wpłynąć na jej typ i robisz to w jednym miejscu. Potem zapisujesz wartość i wiesz, że zawsze będzie ona poprawna... A co mi z tego, że zmienna nazywa się $_DB, skoro za chwilę może wyglądać identycznie jak $_CP (zupełnie nieintuicyjna nazwa...) albo $string?
nasty
Cytat
$_CP (zupełnie nieintuicyjna nazwa...)

$_CP => CrystalPage ale na localu od dawna zmienilem na $_SYS

a co mi z kontroli typow jak ja tam chowam tylko zmienne comfig-u i db?
np. gdzie jest folder z cachem albo user do bazy danych...
tutaj niema co sie bawic w typy w takim przypadku
NuLL
Moze zdanie o slowie global jest takie ze powinni dac w php.ini mozliwosc wylaczenia tego slowa wogole ze skladni guitar.gif

Typo3 - hmm - zajrzyj sobie do eZ publisha i ew stamtad bierz przyklady.
nasty
Cytat
Typo3 - hmm - zajrzyj sobie do eZ publisha i ew stamtad bierz przyklady.
OT: TYPO3 jest co najmniej 1000 razy lepsze od eZ publish
mike
Cytat(nasty_psycho @ 16.07.2006, 12:28 ) *
OT: TYPO3 jest co najmniej 1000 razy lepsze od eZ publish

LOL
Ładniej wygląda czy jest lepiej i funkcjonalniej napisane?
To pierwsze to może i tak tongue.gif
To drugie? ROTFL
Ludvik
Cytat
$_CP => CrystalPage ale na localu od dawna zmienilem na $_SYS

Rozumiem, że było fajną rozrywką zmieniać wszelkie odwołania do zmiennej $_CP na $_SYS.
Cytat
a co mi z kontroli typow jak ja tam chowam tylko zmienne comfig-u i db?
np. gdzie jest folder z cachem albo user do bazy danych...
tutaj niema co sie bawic w typy w takim przypadku

Czyli oczekujesz, że zawsze znajdzie się tam tablica? Czyli jednak potrzebujesz kontroli typów... Zrozum, że do tej zmiennej możesz przypisać co chcesz, gdzie chcesz i kiedy chcesz. Na dobrą sprawę przed każdym użyciem wypadało by sprawdzić, czy wciąż zawartość jest poprawna. Chcę zobaczyć, jak piszesz do tego testy... Bo chyba poważny CMS, powinien być przetestowany?

Takim sposobem otwierasz sobie furtkę do błędów, których nie wyłapią Ci żadne testy. Ja, kiedy przekazuję obiekt z referencją do DAO, wiem, że dostanę wewnątrz klasy zawsze to, czego potrzebuję. Natomiast po twojej zmiennej $_DB nie wiem czego się mam spodziewać? AdoDB? PEAR:biggrin.gifB? Propel? PDO? Moje klasy zawsze będą poprawne, bez względu na to, co przekażesz im jako obiekt DAO, bo zawsze interfejs będzie prawidłowy. Twoje zależą od zmiennej globalnej, nad którą nie masz kontroli. W momencie testu nie jesteś w stanie zapewnić, że ta zmienna zawsze będzie poprawna.

Na dobrą sprawę, wywołując dwa zapytania, a pomiędzy nimi jakieś instrukcje, możesz nawet nie dowiedzieć się, że używasz innej bazy danych...
NuLL
Cytat(nasty_psycho @ 16.07.2006, 12:28 ) *
OT: TYPO3 jest co najmniej 1000 razy lepsze od eZ publish

OT: Ty dddddddduuuuuuuuuuzzzzzzzzzzooooooooooo jeszcze musisz sie nauczyc o programowaniu - oj duzo laugh.gif

EOT
nasty
Cytat
OT: Ty dddddddduuuuuuuuuuzzzzzzzzzzooooooooooo jeszcze musisz sie nauczyc o programowaniu - oj duzo

A ty jeszcze wiecej...
"Krowa, która dużo ryczy, mało mleka daje"
---------------------------------------------------------------------------

W tym $_DB zawsze jest tylko i wylacznie link to objektu ADO i nie bede tam wstawiac PDO czy innych perdul, a moge byc pewny ze tam jest to co chce bo sa w globalach zachowywane tylko dane z plikow ini ktore sa zbierane za pomoca PEAR::Config, i ja sie nie zbiorol to skrypt nie konczy tylko pokazuje errora ( to co jest uplodowane to jest stare i chcialem zebyc tylko zobaczyl o co mi chodzilo). i z $_DB tak samo jak sie nie poloczy to nie knoczy egzekucji.
Po drugie zarowno $_SYS jak i $_DB sa uzywane tylko przez cms i nikt niema do nich dostepu oprucz samego cms-u.
Ludvik
Cytat
Po drugie zarowno $_SYS jak i $_DB sa uzywane tylko przez cms i nikt niema do nich dostepu oprucz samego cms-u.

Rozumiem, że zabronisz ich używania? Czyli nie przewidujesz w swoim systemie rozszerzeń? To cóż to za CMS, którego nie można rozszerzać...

A teraz mam dla Ciebie zagadkę w postaci kodu php.
  1. <?php
  2. function chaos() {
  3. global $_DB;
  4. $db[1] = new PDO('...');
  5. $db[2] = new AdoDBConnection('...');
  6. $db[3] = new InnyObiektDAO('...');
  7. $random = rand(1, 3);
  8. $_DB = $db[$random];
  9. }
  10.  
  11. $_DB = new PDO('..');
  12. $_DB->query('...');
  13. chaos();
  14. $_DB->query('...');
  15. chaos();
  16. $_DB->query('...');
  17. ?>

Wiem, że przykład jest naciągany, ale dokładnie pokazuje jak "bezpieczne" są zmienne globalne. Uwierz mi, że zawsze, kiedy inna osoba dobiera się do kodu istnieje prawdopodobieństwo, że zrobić coś podobnego, lecz nie w tak dobitny sposób.

Czekam tylko, aż ustosunkujesz się do mojego pytania z testami smile.gif
NuLL
Cytat
Po drugie zarowno $_SYS jak i $_DB sa uzywane tylko przez cms i nikt niema do nich dostepu oprucz samego cms-u.

LOL
  1. <?php
  2. $GLOBALS['_SYS']=null;
  3. $GLOBALS['_DB']=null;
  4. ?>

Dopisze sobie w jakims module ( o ile CP bedzie modulowy tongue.gif ) czy szablonie i caly Twoj CMS mozna sobie.... ( dopisac samemu wg wlasnej opinii )

@Ludvik - dobre smile.gif Ten temat niedlugo bedzie mozna przerzucic do dzialu Humor winksmiley.jpg
Vomit
NuLL, nie krzycz tylko spokojnie wyjasniaj winksmiley.jpg

Zmienne globalne sabotuja hermetyzacje i głownie o to chodzi. Nie jest to zgodne z aspektami programowania OOP, staja sie przyczyna smietniku w kodzie. Postronny programista nie wie skad nagle dana zmienna sie wziela. Zmienne globalne sa nie tylko omijane z daleka w php ale w kazdym innym jezyku programowania.

Oczywiscie sa tacy ktorzy korzystaja z nich... na wlasna odpowiedzialnosc, ja z takim kodem nie chcialbym pracowac.
Strzałek
Cytat
"Krowa, która dużo ryczy, mało mleka daje"


Jak dla mnie eZ to: "Krowa, która dużo mleka daje".

A globale z reguły stwarzają dużo kłopotów...
tiraeth
Gdyby globale były super fajne i bezpieczne, to twórcy php nie ustawialiby ich domyślnie na OFF smile.gif

@nasty_psycho: No to fajne CMSy piszesz, bez możliwości rozbudowy... i jeszcze uważasz, że TYPO3 jest lepsze od eZ Publish :| Poprostu gratuluję biggrin.gif
nasty
Sa mozliwosci rozbudowy nawet b. duzo jest ok 10 klas do pracowania z rozszezeniami.
ALE:
Jak kots robi extension to nie bedzie chyba wysadzal sobie cms-u albo hackowac. Bedzie caly dokument o tym jak pisac dodatki do cms-u i tam bedzie jasno napisane zeby tych zmiennych nie uzywac.

@Ludvik: tak to jest naciagane i to bardzo tongue.gif, to samo mozna zrobic z kazda zmienna. a $_DB nie jest zmienna typu array, ja w cp uzywam tylko ADO i nic innego
@Strzalek: to nie bylo o eZ, bo eZ jest bardzo dobry, tylko o NuLL.
@tiraeth: nie chce sie powtarzac ale moj cms ma rozbudowane mozliwosci podczepiania extension-ow i ustalania ich rodzaju jak np. Startup, filter czy content i wiele innych.
@NuLL: z tego co widze jak myslisz o budowie modulow to masz sklonnosci samobujcze tongue.gif
-----------
no i wedlug was jak mozna w alternatywny sposob dla kazdej klasy / funkcji dac mozliwosc korzystania z $_DB ? zeby nie bylo balaganu i w kazdej klasie miec public $dblink.

pozdrawiam
mike
Cytat(nasty_psycho @ 16.07.2006, 14:03 ) *
no i wedlug was jak mozna w alternatywny sposob dla kazdej klasy / funkcji dac mozliwosc korzystania z $_DB ? zeby nie bylo balaganu i w kazdej klasie miec public $dblink.

No kurcze, przecież to podstawy programowania obiektowego.
nasty
to to znam ale mi chodzi o to w moim kodzie pozmieniac, bo nie chce mi sie zmieniac w kazdej prawie funkcji $_DB na jakies tam linki do singletona, za duzo czasu mi to zabierze.

a tak pozatym to testowalem wszystko u mnie na globalach i jest dobrze w niczym nie przerzkadza.

ps. Joomla (mambo) uzywa global - wordpress tez (wiem ze to nie jest 100% OOP ale ...)

gluwnie to typo3 mnie troche uspokoil bo najpierw sie naprawde matrwilem.
Ludvik
Cytat
@Ludvik: tak to jest naciagane i to bardzo tongue.gif , to samo mozna zrobic z kazda zmienna. a $_DB nie jest zmienna typu array, ja w cp uzywam tylko ADO i nic innego

Wciąż nie dotarło do Ciebie moje przesłanie. Dla mnie możesz używać dowolnego typu/interfejsu/klasy bazowej. Ja i tak sobie zrobię z tą zmienną co tylko będę chciał. Ba, nawet nie będę musiał się namęczyć.
Chyba nie powiesz, że ta klasa nie będzie bezpieczna...
  1. <?php
  2. class Example {
  3. public function __construct(PDO $db) {
  4. $this->db = $db;
  5. }
  6.  
  7. public function pobierzDane() {
  8. $result = $pdo->query('...');
  9. return $result->fetchAll();
  10. }
  11.  
  12. protected $db;
  13. }
  14. ?>

ZAWSZE będę miał interfejs, o który mi chodzi... Singleton też zapewni bezpieczeństwo.

Cytat
Jak kots robi extension to nie bedzie chyba wysadzal sobie cms-u albo hackowac. Bedzie caly dokument o tym jak pisac dodatki do cms-u i tam bedzie jasno napisane zeby tych zmiennych nie uzywac.

Rozumiem, że wierzysz w bezbłędnych programistów. Dobre API poza tym da radę bez żadnej dodatkowej dokumentacji. Opis metod powinien starczyć, a nie rozpisywanie się na temat tego, co można zrobić, a czego nie... Jeżeli czegoś nie można zrobić, to ty masz zapewnić, że to się nie stanie. Kusisz los zostawiając furtkę...

Kieruj się tym, co napisał Vomit, bo ujął to krótko i ładnie. Taka jest właśnie prawda o zmiennych globalnych...

Cytat
to to znam ale mi chodzi o to w moim kodzie pozmieniac, bo nie chce mi sie zmieniac w kazdej prawie funkcji $_DB na jakies tam linki do singletona, za duzo czasu mi to zabierze.

Nieprzemyślany projekt rodzi problemy przy rozwoju. Miało być pro, a jakoś nie wyszło chyba. Nigdy nie wierzyłem, że porzucając jedną wersję i zaczynając pisać drugą, można zmienić styl pisania w tak znaczny sposób.

OT: Popraw bloga. Chwalisz się, że waliduje się, a tak nie jest.
Cysiaczek
Ale się postów namnożyło smile.gif
Nasty: Obrona globali nie ma sensu. Świat poszedł do przodu. Programiści dostając do reki nową klasę chcą jej używać, a nie zastanawiać się, czy klasa nie ma gdzieś jakiegoś globala. Sam, kiedy chcę użyć nowej klasy, patrzę najpierw na interfejs. Od razu wiem, co musze przekazać do konstruktora, jakie ewentualnie metody potrzebują informacji z zewnątrz. Bardzo jestem zadowolony, kiedy mogę przekazać wartości do konstruktora i cieszyć się z używania getCostam() i setCostam(). Gdybym musiał przejmować się tym, że jakaś metoda w klasie używa globala i muszę zadbać o dostarczenie jego wartosci, to przestaje się robic wesoło :/

Piszesz, że nie chcesz robić frameworka. W porządku. Pisz dla siebie. Zauważ, że sam zwróciłes uwagę na to, że nie chce Ci się zmieniać X wystąpień twojej zmiennej na Singletona. To jest właśnie jedna z nieporządanych cech klasy/aplikacji - olbrzymia ilość miejsc, w których należy dokonac poprawek, jeśli coś zmieniasz. Nieużywanie zmiennych globalnych redukuje ten proces do niezbędnego minimum (czuję się jakbym książkę cytował rolleyes.gif ).
Rozumiem, że twój post był próbą zwrócenia uwagii na istnienie tego typu zmiennych w wielu publikacjach, które są przecież używane. Coż - one kiedyś muszą zostać przepisane lub napisane od nowa.

Pozdrawiam
nasty
Cytat
Nieprzemyślany projekt rodzi problemy przy rozwoju. Miało być pro, a jakoś nie wyszło chyba. Nigdy nie wierzyłem, że porzucając jedną wersję i zaczynając pisać drugą, można zmienić styl pisania w tak znaczny sposób.

problemy przy rozwoju? u mnie global nie sa problemem i nie mam aktualnie zadnych problemow z rozwojem (cms-u oczywiscie tongue.gif).
Jutro postaram sie uplodowac to co mam napisane do tej pory.

ogulnie to narazie nie bede zmienial niczego bo jest za duzo pracy przy tym, ale dziekuje za opinje.
acztery
pokaz ten Twój CMS ciekaw jestem co to za cudo. Nasto ja robie byki ortograficzne ale Ty bijesz mnie o stokroć. smile.gif
nasty
Cytat
pokaz ten Twój CMS ciekaw jestem co to za cudo. Nasto ja robie byki ortograficzne ale Ty bijesz mnie o stokroć.

~acztery: bedzie gotowy za jakis 2-3 misiace ale screeny mozesz zobaczyc na stronie,
a co do ortorafji to **** ***** ***** ***** tongue.gif

(poprostu nie chce sie za bardzo powtarzac)
nasty
no strasznie mi pomogles, jestem dozgonnie wdzieczny za tak bardzo solidnie napisany i rozbudowany artukul, myslalem ze nigdzie sie nie dowiem jak pacowac ze zmiennymi tongue.gif
Diwi
Haha, nie wiem co powiedzieć. Pomijam to że jest bardzo krótki i g**no daje to jeszcze ma błędy w kodzie php exclamation.gif

Cytat
  1. <?php
  2. $iLiczba = 5; // zmienna globalna
  3. function zmien()
  4. {
  5. global $iLiczba; // tutaj definiujemy, że używamy zmiennej globalnej
  6. $iLiczba = 26; // zmienna lokalna - zasłania globalną zmienną $iNumber
  7. echo 'W funkcji zmien $iNumber = ' . $iNumber . '</br>';
  8. }
  9. echo 'Przed funkcją zmien $iNumber = ' . $iNumber . '<br />';
  10. zmien();
  11. echo 'Po funkcji zmien $iNumber = ' . $iNumber;
  12. ?>


Ten przykład wyświetli:
Przed funkcją zmien $iNumber = 5
W funkcji zmien $iNumber = 26
Po funkcji zmien $iNumber = 26


Dziwne, u mnie na localhost wyświetla:

Cytat
Przed funkcją zmien $iNumber =
W funkcji zmien $iNumber =
Po funkcji zmien $iNumber =


Pozdrawiam
hwao
Pokaże Ci ciekawy sposób
Kod
register_globals = On


I jedizemy tak,
strona.php?_SYS=lol
  1. <?php
  2. function foo() {
  3.  global $_SYS;
  4.  echo $_SYS;
  5. }
  6.  
  7. foo();
  8. ?>

Wynik
Kod
lol


Pomijajac juz inne aspetky bezpieczenstwa

---

No tak, powinno byc On nie Off ale to tylko dla tego że kopiowałem z mojego php.ini i zapomniałem zamienic. Przykład był wymyslany jako najprostrzy jaki wpadł mi w tym momecie do głowy, ale obrazuje co sie moze stac... jego zadaniem nie bylo pokazania jakiegos "super" zagrozenia tylko ujawnienie ze ono jest mozliwe(!) i dlaczego nie powinno sie stosowac global. Taka sytuacja nie miala by miejsca gdyby obiekt byl tworzony wewnatrz jakiegos obiektu.

Także przykład ma działać "na wyobraznie" a nie do gdybania co by było gdyby...
nasty
~hwao: Przekonales mnie (naprawde!), i dzieki, zaczolem zmieniac powoli $_DB;

jak skoncze to dam ci znac i dasz mi kolejne uwagi, ok ?
Vomit
fipaj i hwao zwrocili ostatnio uwage na wzorzec Registry. W jednej z ksiazek przeczytalem, ze jest to zwykly Singleton.

Chciałbym jednak zapytac czemuby nie zrobic takiego API? Powinno zdialac tak samo a nie korzystamy z Singletona.

  1. <?php
  2. class MyRegistry
  3. {
  4. static private $aVars = array();
  5.  
  6. static public function setVar( $var, $value )
  7. {
  8.  MyRegistry::$aVars[$var] = $value;
  9. }
  10.  
  11. static public function getVar( $var )
  12. {
  13.  return MyRegistry::$aVars[$var];
  14. }
  15. }
  16. ?>
tiraeth
Cytat(nasty_psycho @ 17.07.2006, 08:49 ) *
~hwao: Przekonales mnie (naprawde!), i dzieki, zaczolem zmieniac powoli $_DB;

jak skoncze to dam ci znac i dasz mi kolejne uwagi, ok ?


~nasty_psycho, zastanawiam się tylko gdzie zostawiłeś narząd, który nazywa się M-Ó-Z-G-I-E-M. Jak byś chociaż przeczytał zawartość tego artykułu to być zrozumiał istotę keyword zwanego jako global" title="Zobacz w manualu php" target="_manual (ostatni kod w tym artykule). A tak to mogę tylko Ci pogratulować umiejętności czytania ze zrozumieniem laugh.gif

withstupidsmiley.gif withstupidsmiley.gif
nasty
~tiraeth: ja zobaczylem tylko jak "wyglada" ten artykul to az mi sie slabo zrobilo, i mam takie pytanie: czy ty rozumiesz co tu sie pisze w tym topicu? bo chyba nie za bardzo ... :
Cytat
A jeżeli pierwszy raz słyszych o definiowaniu używania zmiennych globalnych w funkcjach czy też w klasach, to gratuluję Twojej umiejętności programowania

Przeciez caly topic jest o globalach, a ty mnie odsylasz do tekstu gdzie jest napisane co to jest global questionmark.gif!
tiraeth
Edit: Wracając do posta hwao, który jest błędny.

URL: blabla.php?_SYS=lol

Kod
register_globals = Off

  1. <?php
  2. function foo()
  3. {
  4.  global $_SYS;
  5.  echo $_SYS;
  6. }
  7.  
  8. foo();
  9. ?>


Returns:


Kod
register_globals = On

  1. <?php
  2. function foo()
  3. {
  4.  global $_SYS;
  5.  echo $_SYS;
  6. }
  7.  
  8. foo();
  9. ?>


Returns:
Kod
lol




URL: blabla.php
Kod
register_globals = Off

  1. <?php
  2. $_SYS = 'rotfl';
  3. function foo()
  4. {
  5.  global $_SYS;
  6.  echo $_SYS;
  7. }
  8.  
  9. foo();
  10. ?>


Returns:
Kod
rotfl


Tak to wygląda (przed chwilą sprawdzałem...)
nasty
ok, koniec klutni tongue.gif !
Postanowielm ze poprawie, i mozecie zobaczy cesciowe efekty poprawien ( bo nie bardzo mialem czasu) na http://crystalpage.sf.net/code/ , tak lepjej ?
NuLL
Cytat
@NuLL: z tego co widze jak myslisz o budowie modulow to masz sklonnosci samobujcze

Taa.....

Ja Ci moge pokazac jak wyglada moj stosunek do zmiennych superglobalnych i globalnych w moim frameworku ktory wykorzystuje na codzien w pracy ? O tak
  1. <?php
  2. class webRequest
  3. {
  4. //kod
  5.  
  6. //singleton
  7. private function __construct(){
  8. //kod
  9. unset($_POST,$_GET,$_SERVER,$_FILES,$_COOKIE,$_ENV,$_SESSION,$GLOBALS,$_REQUEST);
  10. }
  11. }
  12. ?>

I moge Ci zagwaratowac ze zaden programista - nawet Ty biggrin.gif nie jest w stanie niczego z nim popsuc piszac modul.
hwao
ja umie ;] daj mi tylko zrodla ;]

Swoja droga, to jak Twoj system potrafily polozyc zmienen globalne, to nie masz filtrowania zadnych danych...
NuLL
Cytat
Swoja droga, to jak Twoj system potrafily polozyc zmienen globalne, to nie masz filtrowania zadnych danych...

Tzn questionmark.gif Wszystkie superglobale przed zniszczeniem sa umieszczane w odpowiednich klasach i dostep do kazdej z nich odbywa sie przez filtry smile.gif
nasty
no, panowie, moze wreszcie mi powiecie czy teraz jest zmiana na lepsze w kodzie ?
http://crystalpage.sf.net/code/
czy daley isc takim tropem ?
hwao
Jeżeli to poprafiles, to dobrze...

Co do kodu, to ja napewno bym tak nie pisal duzej aplikacji

Zebym nie był goło słowny

  1. <?php
  2. public function GetExtPath($extShotName) {
  3. global $_CP;
  4. if ($dir_handle = opendir('extensions/')) {
  5.  
  6. $files = scandir('extensions/');
  7. while ((list($no, $file) = each($files)) ) {
  8. ?>
nasty
tak, no wiem jeszcze nie wszystkie global sa usuniete ale wszystkie $_DB i troche configu, ale to jest tylko kwestja czasu tongue.gif
acztery
nasty_psycho wiem ze to nie ma związku z tematem ale polecam Ci wykorzystać DB_DataObject w tym cms szybki o obsługuje różne bazy danych.
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.