Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: 101 pytań dotyczących MVC...
Forum PHP.pl > Forum > PHP
Turgon
Nie rozumiem do czego są te dwa elementy. Prosiłbym najlepiej na przykładach smile.gif .

WebRequest oraz WebController - dop. ActivePlayer
hwao
WebRequest
WebControllera, chodzi Ci o Kontroler w MVC czy z innych wzorców?
Turgon
Zmieniłem nieco temat, gdyż mam teraz inny problem smile.gif . Mam biblioteki np. Chameleon (Zamierzam go użyć jako system szablonów biggrin.gif ), więc jest problem. Czy zastosować dziedziczenie, żeby połączyć to np. z modelem smile.gif? czy jak ? Żeby jego funkcje były dostępne też w module.
dr_bonzo
A po co modelowi system szablonow? To widok z nich korzysta do wyrysowania siebie. I nie dziedzicz po systemie szablonow tylko go uzyj.
Turgon
Czyli mam system szablonów ładować do modułu, który w wizualizując dane prześle je potem do przeglądarki smile.gif ?
sticker
Turgon napisz jaśniej co chcesz z robić bo cieżko zrozumieć co i jak.. Nie wiem czy dobrze pojąłeś idee samego wzorca
hwao
Jak chcesz moge Ci zaprezentowac mojego ultra latwego frameworka z obsluga Chameleon'a
Turgon
Po prostu pytam czy Chameleona mam ładować poprzez :
  1. <?php
  2. include("chameleon.class.php");
  3. $chameleon = new chameleon;
  4. $chameleon->chamaleon();
  5. ?>

czy :
  1. <?php
  2. class modul extends chameleon
  3. {
  4. i tutaj klasa modulu
  5. }
  6. ?>
hwao
jezeli nie masz jakis metod w module i nie przewidujesz zmiany systemu, to normalnie(bez dziedziczenia)
Turgon
Chce zrobić jak największą elastyczność i zrobię taką klasę templates i drobna zmiana w niej pozwoli na zmiane systemu templatków. Ja to tak myślę :
  1. <?php
  2. class templates extends nazwaklasysystemutemplatow
  3. {
  4. }
  5. ?>

I takie cuś bym ładował do każdego modułu smile.gif . Co o tym myślisz smile.gif?
Ociu
Ja stworzyłem klasę, która robi takie coś:
  1. <?php
  2. eval(' class View extends ' . $this->core . ' { function execute() { $error = 'die()'; trigger_error($error, E_USER_ERROR); } } ');
  3. ?>

smile.gif
Turgon
Nie rozumiem za bardzo kodu smile.gif . Ty robisz tą klasę ze zmiennych smile.gifquestionmark.gif
Ociu
w okrojonej wersji to wygląda tak:
  1. <?php
  2.  
  3. class Renderer {
  4. var $core;
  5.  
  6. # Tu rozne dziwne rzeczy...
  7.  
  8. function setCore( $ClassName = 'smarty' ) {
  9.  
  10. $this->core = $ClassName;
  11.  
  12. }
  13.  
  14. function render() {
  15.  
  16. # tu pare dziwnych rzeczy
  17.  
  18. eval(' class View extends ' . $this->core . ' { function execute() { $error = 'die()'; trigger_error($error, E_USER_ERROR); } } ');
  19. }
  20.  
  21. }
  22. ?>


Kod tworzy klasę, która dziedziczy po naszym wybranym systemie szablonów, np. smarty, chameleon, patTempalte etc.
Turgon
Dzięki smile.gif . Postaram się podobne cuś wyrobić smile.gif . Obecnie pisze webRequest...
I tu się pojawia pytanie. Jak polecacie odfiltrować Requesta z HTML, SQLa itp. smile.gif?

  1. <?php
  2. class webRequest
  3. {
  4. var $bHTML;
  5. var $bMaGic;
  6. var $bRGbyScript;
  7. var $bSQL;
  8. var $aKey;
  9. var $aType;
  10. var $aString;
  11. var $Request = array();
  12. public function __contruct()
  13. {}
  14. private function RGbyScript($bRGbyScript,$aKey,$aType)
  15. {
  16. if(strolower($bRGbyScript == 'true'))
  17. {
  18. switch(strolower($aType))
  19. {
  20. case 'get':
  21. $$aKey = $_GET[$aKey];
  22. return $$aKey;
  23. break;
  24. case 'post':
  25. $$aKey = $_POST[$aKey];
  26. return $$aKey;
  27. break;
  28. case 'cookie'
  29. $$aKey = $_COOKIES[$aKey];
  30. return $$aKey;
  31. break;
  32. }
  33. }
  34. else
  35. {
  36. return;
  37. }
  38. }
  39. public function getRequest($aType,$aKey,$bMaGic,$bHTML,$bRGbyScript,$bSQL)
  40. {
  41. switch(strolower($aType))
  42. {
  43. case 'get':
  44. $this->Prepare($_GET[$aKey],$bMaGic,$bHTML,$bRGbyScript,$bSQL);
  45. break;
  46. case 'post':
  47. $this->Prepare($_POST[$aKey],$bMaGic,$bHTML,$bRGbyScript,$bSQL);
  48. break;
  49. case 'cookie':
  50. $this->Prepare($_COOKIES[$aKey],$bMaGic,$bHTML,$bRGbyScript,$bSQL);
  51. break;
  52. }
  53. }
  54. private function Prepare($aString,$bMaGic,$bHTML,bRGbyScript,$bSQL,$aType,$aKey)
  55. {
  56. if(strolower($RGbyScript) == 'true')
  57. {
  58. $this->$RGbyScript('true',$aKey,$aType);
  59.  
  60. }
  61. if(strolower($bMaGic) == 'true')
  62. {
  63. $aString = jakas_funkcja;
  64. }
  65. if(strolower($bHTML) == 'true')
  66. {
  67. $aString = oczyszcza z HTMLa;
  68. }
  69. if(strolower($bSQL) == 'true')
  70. {
  71. $aString = oczyszcza z SQL;
  72. }
  73. return 
  74. }
  75. }
  76. ?>

U jest problem ;/ . Tworzę to Register Globals przy pomocy funkcji klasy i pojawia się pytanie jak to załatwić, żeby działało, tak ja chce ;/ . Czyli :
  1. <?php
  2. class webRequest
  3. {
  4. var $bHTML;
  5. var $bMaGic;
  6. var $bRGbyScript;
  7. var $bSQL;
  8. var $aKey;
  9. var $aType;
  10. var $aString;
  11. var $Request = array();
  12. public function __contruct()
  13. {}
  14. private function RGbyScript($bRGbyScript,$aKey,$aType)
  15. {
  16. if(strolower($bRGbyScript == 'true'))
  17. {
  18. switch(strolower($aType))
  19. {
  20. case 'get':
  21. $$aKey = $_GET[$aKey];
  22. return $$aKey;
  23. break;
  24. case 'post':
  25. $$aKey = $_POST[$aKey];
  26. return $$aKey;
  27. break;
  28. case 'cookie'
  29. $$aKey = $_COOKIES[$aKey];
  30. return $$aKey;
  31. break;
  32. }
  33. }
  34. else
  35. {
  36. return;
  37. }
  38. }
  39. public function getRequest($aType,$aKey,$bMaGic,$bHTML,$bRGbyScript,$bSQL)
  40. {
  41. switch(strolower($aType))
  42. {
  43. case 'get':
  44. $this->Prepare($bMaGic,$bHTML,$bRGbyScript,$bSQL,$aType,$aKey);
  45. break;
  46. case 'post':
  47. $this->Prepare($bMaGic,$bHTML,$bRGbyScript,$bSQL,$aType,$aKey);
  48. break;
  49. case 'cookie':
  50. $this->Prepare($bMaGic,$bHTML,$bRGbyScript,$bSQL,$aType,$aKey);
  51. break;
  52. }
  53. }
  54. private function Prepare($bMaGic,$bHTML,bRGbyScript,$bSQL,$aType,$aKey)
  55. {
  56. if(strolower($RGbyScript) == 'true')
  57. {
  58. $this->$RGbyScript('true',$aKey,$aType);
  59. }
  60. if(strolower($bMaGic) == 'true')
  61. {
  62. $$aKey = jakas_funkcja;
  63. }
  64. if(strolower($bHTML) == 'true')
  65. {
  66. $$aKey = oczyszcza z HTMLa;
  67. }
  68. if(strolower($bSQL) == 'true')
  69. {
  70. $$aKey = oczyszcza z SQL;
  71. }
  72. return $$aKey;
  73. }
  74. }
  75. ?>

Czy jest to dobre rozwiązanie questionmark.gif
hwao
Uzyj mojego, działa dobrze i jest dostepny zadarmo (testowany w sporych projektach)
Turgon
Dobra trochę sobie zerżnęłem smile.gif , ale teraz mam inne pytanko. Co oznacza Referencja smile.gifquestionmark.gif I też jak zrobić, żeby dany parametr w funkcji był nie wymagany smile.gif . Przeszukałem cały manual i nie znalazłem...
mike
Cytat(Turgon @ 2006-05-17 07:58:48)
Dobra trochę sobie zerżnęłem smile.gif , ale teraz mam inne pytanko. Co oznacza Referencja smile.gifquestionmark.gif I też jak zrobić, żeby dany parametr w funkcji był nie wymagany smile.gif .  Przeszukałem cały manual i nie znalazłem...

Za płytko kopałeś:
Podręcznik php :: Funkcje :: Argumenty funkcji

P.S.
Wikipedia :: Referencja
Turgon
Nadal nie rozumiem referencji, ale co tam smile.gif . Teraz problem kolejny biggrin.gif . Co do Templatów biggrin.gif . Czy Poprzez Model w Vars ustalać mam np. path do template czy w module ma być gotowa instrukcja dla Chameleona ?
hwao
zacznij od podstaw programowania w php, bo nie dosc ze nie wiadomo "w jakim jezyku" do Ciebie mowic, to Ty tez nie rozumiesz co mowia do Ciebie. Pozatym widze ogromne braki w podstawach
Turgon
Wiesz nie rozumiem po co są te referencje smile.gif . Co do domyślnej wartości nie byłem do końca pewny. I hwao podstawowa sprawa "Kto pyta nie błądzi." Rozumiesz dlaczego pytam się was o to wszystko smile.gif . Za chwilę skończę WebRequesta i zabiorę się za WebController i biblioteki trzeba będzie napisać biggrin.gif oraz też ładowanie sterowników smile.gif .
Teraz jednakże pojawił się kolejny problem konstruktorski. Czy WebController ma ładować bezpośrednio moduły czy odnosić się do jakiegoś zbioru, listy ich ? Jak myślicie smile.gif?
Neotion
Referencja (tak mi się wydaje sam się uczyłem na błędach): masz 2 zmienne z czego jedna zawiera dane a druga to jakby "skrót" do niej. TAki alias do tego samego obszaru pamięci.
Turgon
Dziękuje Neotion, teraz rozumiem, a na poprzednie pytanie ktoś mi odpowie...
hwao
zalezy jak chce programista...
Masz na forum podobne watki, poszukaj...
Turgon
Chodzi mi bardziej co jest szybsze i wygodniejsze smile.gif? Np. wtedy z listą można by z łatwością robić instalację modułów w mySQLu np. smile.gif , więc smile.gif?
EDIT:
Mam problem :
  1. <?php
  2. class webRequest
  3. {
  4. var $bHTML;
  5. var $bMaGic;
  6. var $bRGbyScript;
  7. var $bSQL;
  8. var $aKey;
  9. var $aType;
  10. var $aString;
  11. var $Request = array();
  12. public function __construct()
  13. {
  14. $bMaGic = get_magic_quotes_gpc();
  15. }
  16. private function RGbyScript($bRGbyScript,$aKey,$aType)
  17. {
  18. if(strolower($bRGbyScript == 'true'))
  19. {
  20. switch(strolower($aType))
  21. {
  22. case 'get':
  23. $$aKey = $_GET[$aKey];
  24. return $$aKey;
  25. break;
  26. case 'post':
  27. $$aKey = $_POST[$aKey];
  28. return $$aKey;
  29. break;
  30. case 'cookie':
  31. $$aKey = $_COOKIES[$aKey];
  32. return $$aKey;
  33. break;
  34. }
  35. }
  36. else
  37. {
  38. return;
  39. }
  40. }
  41. public function getRequest($aType,$aKey,$bHTML = "false",$bRGbyScript = "false",$bSQL = "false",$bMaGic = "false")
  42. {
  43. switch(strolower($aType))
  44. {
  45. case 'get':
  46. $this->Prepare($bMaGic,$bHTML,$bRGbyScript,$bSQL,$aType,$aKey);
  47. break;
  48. case 'post':
  49. $this->Prepare($bMaGic,$bHTML,$bRGbyScript,$bSQL,$aType,$aKey);
  50. break;
  51. case 'cookie':
  52. $this->Prepare($bMaGic,$bHTML,$bRGbyScript,$bSQL,$aType,$aKey);
  53. break;
  54. }
  55. }
  56. private function Prepare($bMaGic,$bHTML,bRGbyScript,$bSQL,$aType,$aKey)
  57. {
  58. if(strolower($RGbyScript) == 'true')
  59. {
  60. $this->$RGbyScript('true',$aKey,$aType);
  61. }
  62. if(strolower($bMaGic) == 'true')
  63. {
  64. $$aKey = stripslashes($$aKey)
  65. }
  66. if(strolower($bHTML) == 'true')
  67. {
  68. $$aKey = htmlentities($$aKey,ENT_COMPAT,'UTF-8');
  69. }
  70. if(strolower($bSQL) == 'true')
  71. {
  72. $$aKey = mysql_escape_string($$aKey);
  73. }
  74. return $$aKey;
  75. }
  76. }
  77. ?>
To klasa.
Ja ją uruchamiam to mam :
Cytat
Parse error: syntax error, unexpected ',', expecting '&' or T_VARIABLE in /data/web/virtuals/turgon.be/www/library/webRequest.class.php on line 56
Diwi
  1. <?php
  2. if(strolower($bMaGic) == 'true')
  3. {
  4. $$aKey = stripslashes($$aKey)
  5. }
  6. ?>


Brak średnika po stripslashes
hwao
W ogole wiesz co oznacza zapis $$aKey?
Zastanawia mnie poco go stosujesz, mozesz wytlumaczyc?
Turgon
$$aKey, to zmienna przerobiona przez funkcję RGbyScript i dzięki, że zwróciłeś na to uwagę smile.gif . Dopiero teraz to zauważyłem smile.gif . Zaraz poprawię to z średnikiem i chyba chodzi o to, że nie zastosowałem referencji w przypadku zmiennej $MaGic smile.gif .
NuLL
@Turgon - a widziales to -> Zobacz na Forum php.pl

Filtorowanie na potrzeby SQLa na wejsciu jest absurdalnym pomylem. Przy nieco bardziej zaawansowane obrobce danych na wejsciu moze to powodowac bledy. Escapowanie powinno sie odbywac na poziome warstwy dostepu do baz danych.
Turgon
NuLL niezbyt rozumiem tego smile.gif . Jednakże też zauważ, że filtrowanie przeze mnie zależy od argumentów użytkownika. Przecież jak chce w gotowy module to przefiltrować to przefiltruje, a jak mu to nie potrzebne, to nic smile.gif .
NuLL
Widze o bezpieczenstwie raczej pojecia nie masz tiredsmiley.gif Filtrowanie danych wejsciowych to podstawa kazdej aplikacji exclamation.gif
Turgon
No wiem, że filtrowanie konieczne, ale w zależności od potrzeb smile.gif .
matipl
Cytat(Turgon @ 2006-05-17 17:03:52)
Wiesz nie rozumiem po co są te referencje smile.gif . Co do domyślnej wartości nie byłem do końca pewny. I hwao podstawowa sprawa "Kto pyta nie błądzi."
<<ciach>>

aż chciałoby się napisać: "Kto myśli nie błądzi..."
Turgon
Dobra, ale bez spamowania smile.gif . To poprawiona wersja klasy smile.gif :
  1. <?php
  2. class webRequest
  3. {
  4. var $bHTML;
  5. var $bMaGic;
  6. var $bRGbyScript;
  7. var $bSQL;
  8. var $aKey;
  9. var $aType;
  10. var $aString;
  11. var $Request = array();
  12. public function __construct()
  13. {
  14. $bMaGic = get_magic_quotes_gpc();
  15. }
  16. private function RGbyScript($bRGbyScript,$aKey,$aType)
  17. {
  18. if(strolower($bRGbyScript == 'true'))
  19. {
  20. switch(strolower($aType))
  21. {
  22. case 'get':
  23. $$aKey = $_GET[$aKey];
  24. return $$aKey;
  25. break;
  26. case 'post':
  27. $$aKey = $_POST[$aKey];
  28. return $$aKey;
  29. break;
  30. case 'cookie':
  31. $$aKey = $_COOKIES[$aKey];
  32. return $$aKey;
  33. break;
  34. }
  35. }
  36. else
  37. {
  38. return;
  39. }
  40. }
  41. public function getRequest($aType,$aKey,$bHTML = "false",$bSQL = "false",$bMaGic = "false")
  42. {
  43. switch(strolower($aType))
  44. {
  45. case 'get':
  46. $this->Prepare($bMaGic,$bHTML,$bSQL,$aType,$aKey);
  47. break;
  48. case 'post':
  49. $this->Prepare($bMaGic,$bHTML,$bSQL,$aType,$aKey);
  50. break;
  51. case 'cookie':
  52. $this->Prepare($bMaGic,$bHTML,$bSQL,$aType,$aKey);
  53. break;
  54. }
  55. }
  56. private function Prepare(&$bMaGic,$bHTML,$bSQL,$aType,$aKey)
  57. {
  58. $this->$RGbyScript('true',$aKey,$aType);
  59. if(strolower($bMaGic) == 'true')
  60. {
  61. $$aKey = stripslashes($$aKey);
  62. }
  63. if(strolower($bHTML) == 'true')
  64. {
  65. $$aKey = htmlentities($$aKey,ENT_COMPAT,'UTF-8');
  66. }
  67. if(strolower($bSQL) == 'true')
  68. {
  69. $$aKey = mysql_escape_string($$aKey);
  70. }
  71. return $$aKey;
  72. }
  73. }
  74. ?>

Dzisiaj przetestuje na turgon.be smile.gif .

Jak się spodziewałem powstały problemy biggrin.gif to wersja klasy którą użyłem smile.gif :
  1. <?php
  2. class webRequest
  3. {
  4. var $bHTML;
  5. var $bMaGic;
  6. var $bRGbyScript;
  7. var $bSQL;
  8. var $aKey;
  9. var $aType;
  10. var $aString;
  11. var $Request = array();
  12. public function __construct()
  13. {
  14. $bMaGic = get_magic_quotes_gpc();
  15. }
  16. public function getRequest($aType,$aKey,$bHTML = "false",$bSQL = "false",$bMaGic = "false")
  17. {
  18. switch(strtolower($aType))
  19. {
  20. case 'get':
  21. $aType = "$_GET";
  22. $this->Prepare($bMaGic,$bHTML,$bSQL,$aType,$aKey);
  23. break;
  24. case 'post':
  25. $this->Prepare($bMaGic,$bHTML,$bSQL,$aType,$aKey);
  26. break;
  27. case 'cookie':
  28. $this->Prepare($bMaGic,$bHTML,$bSQL,$aType,$aKey);
  29. break;
  30. }
  31. }
  32. private function Prepare(&$bMaGic,$bHTML,$bSQL,$aType,$aKey)
  33. {
  34. if(strtolower($bMaGic) == 'true')
  35. {
  36.  $aType[$aKey] = stripslashes($_$aType[$aKey]);
  37. }
  38. if(strtolower($bHTML) == 'true')
  39. {
  40. $aType[$aKey] = htmlentities($_$aType[$aKey],ENT_COMPAT,'UTF-8');
  41. }
  42. if(strtolower($bSQL) == 'true')
  43. {
  44. $aType[$aKey] = mysql_escape_string($_$aType[$aKey]);
  45. }
  46. return $_$aType[$aKey];
  47. }
  48. }
  49. ?>

Skrypt testujący :
  1. <?php
  2. include("../library/WebRequest.class.php");
  3. $WebRequest = new WebRequest;
  4. $WebRequest->getRequest('get','turgon','true','true','true');
  5. echo $_GET['turgon'];
  6. ?>


I błąd :
Cytat
Parse error: syntax error, unexpected T_VARIABLE in /data/web/virtuals/turgon.be/www/library/webRequest.class.php on line 62
Ociu
Ja nie bardzo rozumiem, po co ten switch w getRequest().

Ja robie takie coś:

  1. <?php
  2. $request = new httpRequest;
  3. print $reuqest->getGetValue('key');
  4. ?>
hwao
Eh... ten Twoj kod jest absurdalny, mysle ze srednio zawansowany uzytkownik znajdzie w nim mase "nie potrzebnych rzeczt i dziwacznych rozwiazan" w przeciagu kilku chwil.

Proponuje Ci wpierw popracowac nad postawami php... dopiero potem brac sie za takie rzeczy.
matipl
Cytat(Turgon @ 2006-05-18 16:17:22)
I błąd :
Cytat
Parse error: syntax error, unexpected T_VARIABLE in /data/web/virtuals/turgon.be/www/library/webRequest.class.php on line 62

Nie wiem jak wogóle możesz wklejać n-ty raz taki problem?!? Trudno jest przecztać komunikat, i wstawić gdzieś brakujące "ucho" albo średnik?
Turgon
Bo to jest kod testowy... Którym się bawię i uczę. A podstawy php rozumiem. I takie pytanie czy wy odrazu programowaliście jak twórcy php ?
matipl
Cytat(Turgon @ 2006-05-19 14:42:48)
Bo to jest kod testowy... Którym się bawię i uczę. A podstawy php rozumiem. I takie pytanie czy wy odrazu programowaliście jak twórcy php ?

Ja mogę wypowiedzieć się za siebie....
Jesli program zwraca mi błąd, że w 62 linii pliku /data/web/virtuals/turgon.be/www/library/webRequest.class.php jest niespodziewany znak, to dla mnie jest to logiczna informacja, najczejsciej jakis srednik lub ucho...
Nie pytam sie znajomych czy to na pewno w tej linii, a moze parser sie pomylil itp...
Pytania powinny byc konstruktywne. Ew. podlacz sobie do php jakiegos debuggera to nawet przeskoczy ci do linii i znaku ktory mu nie odpowiada.
Turgon
Właśnie szukałem jakiegoś debuggera i nie znalazłem... Po za tym napiszę tą klasę od nowa, tak, żeby działało to jak należy smile.gif .
A jednak go odkryłem w mojim php Designerze smile.gif .
Teraz, żem się wkurzył i napisał poprawioną wersję smile.gif :
  1. <?php
  2. class webRequest
  3. {
  4. var $bHTML;
  5. var $bMaGic;
  6. var $bSQL;
  7. var $aKey;
  8. var $Zmienna;
  9. var $Zmienna2;
  10. public function __construct()
  11. {
  12. $bMaGic = get_magic_quotes_gpc();
  13. }
  14. public function getRequest($aKey,$bSQL = "false",$bHTML = "false")
  15. {
  16. if(isset($_GET[$aKey]))
  17. {
  18. $Zmienna2 = $_GET[$aKey];
  19. $this->Prepare($Zmienna2,$bSQL,$bHTML);
  20. $Zmienna = $_GET[$aKey];
  21. return $_GET[$aKey]; 
  22. }
  23. if(isset($_POST[$aKey]))
  24. {
  25. $Zmienna2 = $_POST[$aKey];
  26. $this->Prepare($Zmienna2,$bSQL,$bHTML);
  27. $Zmienna = $_POST[$aKey];
  28. return $_POST[$aKey];
  29. }
  30. if(isset($_COOKIES[$aKey]))
  31. {
  32. $Zmienna2 = $_COOKIES[$aKey];
  33. $this->Prepare($Zmienna2,$bSQL,$bHTML);
  34. $Zmienna = $_COOKIES[$aKey];
  35. return $_COOKIES[$aKey];
  36. }
  37. }
  38. private function Prepare($Zmienna,$bSQL,$bHTML)
  39. {
  40. if(strtolower($bMaGic) == "true")
  41. {
  42. $Zmienna = stripslashes($Zmienna);
  43. }
  44. if(strtolower($bSQL) == "true")
  45. {
  46. $Zmienna = mysql_escape_string($Zmienna);
  47. }
  48. if(strtolower($bHTML) == "true")
  49. {
  50. $Zmienna = htmlentities($Zmienna,ENT_COMPAT,'UTF-8');
  51. }
  52. return $Zmienna;
  53. }
  54. }
  55. ?>
hwao
Uzywaj edytora z kolorowanie, bledow raczej juz nie bedziesz mial - odrazu widac.

Ja zaczynalem od php, potem ciekawsze jezyki a teraz bawie sie (na koncu) pascalem biggrin.gif
Turgon
Muszę stwierdzić, że też zaczynałem od php, ale w pewnym momencie zraziłem się i przeszłem na C++. Po poznaniu podstaw i dojściu do Tablic i Klas wymiękłem. Wróciłem do php i teraz zaczynam zabawy tym językiem smile.gif .

A jednak musiałem coś zepsuć smile.gif :
Otóż mam :
  1. <?php
  2. class webController
  3. {
  4. var $Action;
  5. var $StandardAction;
  6. var $Modules = array();
  7. function __construct()
  8. {
  9. include("./module.list.php");
  10. }
  11. public function Execute($Action = null,$StandardAction = "index")
  12. {
  13. if(is_array($Modules)
  14. {
  15. if(isset($this->Action))
  16. {
  17. strtolower($this->Action);
  18. if(isset($Modules[$this->Action]))
  19. {
  20. if(file_exist($Modules[$this->Action]))
  21. {
  22. include($Modules[$this->Action]);
  23. }
  24. else
  25. {
  26. echo 'Module is not exist. Path :'.$Modules[$this->Action];
  27. }
  28. }
  29. else
  30. {
  31. echo 'Module is not exist. Name :'.$this->Action;
  32. }
  33. }
  34. else
  35. {
  36. strtolower($this->StandardAction);
  37. if(isset($Modules[$this->StandardAction]))
  38. {
  39. if(file_exist($Modules[$this->StandardAction]))
  40. {
  41. include($Modules[$this->StandardAction]);
  42. }
  43. else
  44. {
  45. echo 'Module is not exist. Path :'.$Modules[$this->StandardAction];
  46. }
  47. }
  48. else
  49. {
  50. echo 'Module is not exist. Name :'.$this->StandardAction;
  51. }
  52. }
  53. }
  54. else
  55. {
  56.  echo 'nie ma tablicy?';
  57.  }
  58. }
  59. }
  60. ?>


To plik testowy :
  1. <?php
  2. include("webController.class.php");
  3. $webRequest = new webRequest;
  4. $webController->Execute();
  5. ?>

Klasa webRequest jest wcześniej. I niezależnie co zrobię mam :
Cytat
tablicy nie ma?


I jeszcze zapomniałbym. Plik module.list.php :
  1. <?php
  2. $Modules['index'] = 'index.php';
  3. ?>


Co robię źle smile.gif?

Jak się okazało tablicy nie ma ;/. Dlaczego skrypt jej nie łapie ?
siemakuba
Cytat
Jak się okazało tablicy nie ma ;/. Dlaczego skrypt jej nie łapie ?

dlatego ze zmienne tworzone wewnątrz funkcji maja zasieg lokalny, nie sa wiec widoczne poza funkcja.
po kolei:
  1. <?php
  2.  
  3. include("./module.list.php");
  4. // juz masz lokalnie w kostruktorze widoczna tablice $Modules 
  5. // "pokaz" ja teraz reszcie metod klasy:
  6. $this->Modules = $Modules; 
  7.  
  8. ?>


pozniej tez musisz odwolywac sie do wlasciwosci klasy a nie do zmiennej, wiec kolejno musisz zmienic tak jak ponizej:
  1. <?php
  2. if(is_array($Modules)
  3.  
  4. //zmieniasz na
  5.  
  6. if (is_array($this->Modules))
  7. ?>


pozdr.
Turgon
Dzięki - działa smile.gif . Nie zauważyłem tego błędu smile.gif . Dzisiaj muszę wziąść się za handler sesji. I teraz mam problem. Robić to na Ciachach czy na czym smile.gif?
Po za tym do czego służy autoloader, bo nie kumam? Może jakieś przykłady ?
mike
Cytat(Turgon @ 2006-05-21 18:40:59)
Po za tym do czego służy autoloader, bo nie kumam? Może jakieś przykłady ?

A może jakaś wyszukiwarka? rozejrzeć się po forum? manual?

1. Włączanie plików + autoloader, chętnie bym posłuchał ciekawych pomysłów (przyklejony temat, ponad 120 postów a Ty przykładów chcesz)
2. Manual :: Autoloading Objects
Turgon
Dziękuje. Ale teraz nadal problem jest z tym przeklętym Handlerem ? Interesują mnie tylko i wyłącznie informacje po polsku, bo łatwiej wtedy o precyzje. I z góry mówię, to co wygooglowałem nie zadawala mnie.

Więc tak smile.gif . Napisałem jak narazie bardzo prostą klasę handlera :
  1. <?php
  2. class sessionHandler
  3. {
  4. var $sessname;
  5. var $sessvalue;
  6. var $time;
  7. function __construct()
  8. {
  9. }
  10. function start_sess($sessname,$sessvalue,$time)
  11. {
  12. setcookie($sessname,$sessvalue,$time);
  13. }
  14. function is_sess($sessname)
  15. {
  16. if(isset($_COOKIES[$sessname]))
  17. {
  18. if(md5($COOKIES[$sessname]) = $controlesum)
  19. {
  20. return 'true';
  21. }
  22. }
  23. else
  24. {
  25. return 'false';
  26. }
  27. }
  28. function kill_sess($sessname,$time)
  29. {
  30. setcookie($sessname,'','-'.$time);
  31. }
  32. }
  33. ?>

Ale czy warto to rozwijać ? Czy może pójść w mySQL ? Czy też sesjami się bawić ?
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.