Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl


eai
Napisane: 19.08.2011, 16:06:30





Grupa: Zarejestrowani
Postów: 367
Dołączył: 20.05.2005

Ostrzeżenie: (0%)
-----

Proste smile.gif

Kod
php -r 'define('STALA', (new stdClass)); list($someObject) = STALA; var_dump($someObject);'
php -r 'define('STALA', (new stdClass)); $someObject = STALA; var_dump($someObject);'


Znaczenie tutaj ma funkcja list która tworzy zmienną $someObject o wartości NULL.
W drugim przypadku w definicji $someObject = STALA; wartość zmiennej to string "STALA"·
Odwołując się do zmiennej jak do obiektu "$someObject->abs = 2;" w przypadku gdy $someObject = null, PHP tworzy obiekt klasy stdClass.

Przykład:
Kod
php -r '$test = null; $test->a = 2; echo $test->a;'

Kod
php -r '$test = 'test'; $test->a = 2; echo $test->a;'





  Forum: Hydepark · Podgląd postu: #891598 · Odpowiedzi: 2 · Wyświetleń: 606

eai
Napisane: 17.10.2010, 17:48:36





Grupa: Zarejestrowani
Postów: 367
Dołączył: 20.05.2005

Ostrzeżenie: (0%)
-----

Nie musisz kopiować zawartości innych bootstrapów, są to dodatkowe bootstrapy z możliwością rejestracji specyficznych zasobów dla danego modułu. Dodatkowo możesz z głównego bootstrapa, dostać się do instancji obiektów tych klas. Zarejestrowany element plugin etc. jest widziany w całej aplikacji tak jakbyś rejestrował go w tym głównym bootstrapie. No i przede wszystkim z automatu rejestrują Ci przestrzeń nazw i możesz mieć oddzielne modele w poszczególnych modułach, te modele mogą też dziedziczyć po modelach wspólnych dla aplikacji (tzn. z application/models). Zarejestrowane przestrzenie widoczne są w całej aplikacji czyli we wszystkich modułach. Czyli będąc w kontrolerze modułu np. admin możesz wywołać model z modułu np. users. Nie wiem czemu nie przekonuje Cię to rozwiązanie, przecież 20 pustych plików Bootstrap.php to nic złego, a czasami może je wykorzystasz do rejestracji jakiegoś zasobu na potrzeby danego modułu.


No dobra ale wracając do problemu, to przede wszystkim zrób to dobrze. Plugin to także złe miejsce do tego, bo przecież plugin uruchamiany jest po rozruchu aplikacji (po wykonaniu procesów bootstrapa) Nie dodawaj tego do include_path bo to nie twoja działka, takie sprawy zostaw Frameworkow'i. W Zend Framework jest od takich spraw Zend_Loader a w twoim przypadku jest specjalna klasa do tego Zend_Application_Module_Autoloader.

A więc rozwiązaniem twojego problemu będzie taki o to główny Bootstrap.
  1. <?php
  2.  
  3. class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
  4. {
  5. /**
  6.   * Inicjowanie przestrzeni nazw dla wszystkich modułów
  7.   *
  8.   * @return void
  9.   */
  10. protected function _initModulesNamespace()
  11. {
  12.  
  13. $modulesDir = APPLICATION_PATH . DIRECTORY_SEPARATOR . 'modules';
  14.  
  15. if(file_exists($modulesDir) && is_dir($modulesDir)) {
  16. // Zawartosc katalogu
  17. $modules = scandir($modulesDir);
  18.  
  19. // Usuwamy dwa pierwsze elementy, ponieważ to katalog nadrzędny i bierzący
  20. $modules = array_slice($modules,2);
  21. foreach($modules as $file) {
  22. // Sprawdzamy czy plik jest katalogiem i czy nie zaczyna się od "." np: .svn
  23. if(is_dir($modulesDir . DIRECTORY_SEPARATOR . $file) && substr($file, 0, 1) != '.') {
  24. // Rejestrujemy przestrzenie
  25. $autoloader = new Zend_Application_Module_Autoloader(array(
  26. 'namespace' => ucfirst(strtolower($file)),
  27. 'basePath' => $modulesDir. DIRECTORY_SEPARATOR . $file,
  28. // Rejestrujemy przestrzeń dla modeli
  29. 'model' => array ('path' => 'models/', 'namespace' => 'Model'),
  30.  
  31. // ... nie wiem może zechcesz zarejestrować też Formularze
  32. 'form' => array ('path' => 'forms/', 'namespace' => 'Form')
  33. // .. itd...
  34. ));
  35. }
  36. }
  37.  
  38. }
  39. }
  40. }



pisałem z palca więc może coś trzeba poprawić. Ale generalnie powinno latać winksmiley.jpg
  Forum: Frameworki · Podgląd postu: #798650 · Odpowiedzi: 14 · Wyświetleń: 1 704

eai
Napisane: 17.10.2010, 16:19:43





Grupa: Zarejestrowani
Postów: 367
Dołączył: 20.05.2005

Ostrzeżenie: (0%)
-----

Mówiąc domyślna przestrzeń, miałem na myśli podstawową konwencję nazewnictwa oraz listę zasobów jakie zostaną zarejestrowane. Bo korzystając z Autoloader'a mogę zarejestrować swoje własne i/lub zmodyfikować istniejące przestrzenie.

Domyślna przestrzeń aplikacji pozostanie czyli dla modeli: Application_Model_Tabela, Application_Form_Formularz itd.
A każdy z tych bootstrapów zarejestruje swoją przestrzeń nie kolidującą z przestrzenią dla Aplikacji (o której mówisz).
Główny bootstrap w katalogu application zostaje jak był. Definiujesz tylko dodatkowe bootstrapy dla modułów. Zaletą
takiego rozwiązania jest dobry podział logiki aplikacji. Załóżmy że masz moduł users, który odpowiada za autoryzacje, prawa dostępu, zarządzanie użytkownikami.
Napewno w swojej aplikacji używasz praw dostępu i rejestrujesz jakiś plugin wykorzystujący Zend_Acl i domyślam się że umieściłeś dodatkowy folder w katalogu library. Logicznie rzecz biorąc ten plugin powinien się znajdować w module users, i z tamtąd go powinieneś zarejestrować używając właśnie bootstrapa modułu users. Bo gdy usuniesz ten moduł (wyłączysz), to automatycznie wyłączysz sprawdzanie praw dostępów - bo po usunięciu tego modułu nie będzie co sprawdzać - użytkowników przecież nie będzie.

Mam nadzieje że rozumiesz idee smile.gif
  Forum: Frameworki · Podgląd postu: #798617 · Odpowiedzi: 14 · Wyświetleń: 1 704

eai
Napisane: 23.04.2010, 11:00:47





Grupa: Zarejestrowani
Postów: 367
Dołączył: 20.05.2005

Ostrzeżenie: (0%)
-----

W activeadmin możesz przypisać do domeny wybrany katalog.
Stwórz sobie np katalog sf, wrzuć całą swoja aplikację a potem ustaw domenę na katalog ~/sf/web
  Forum: Frameworki · Podgląd postu: #739404 · Odpowiedzi: 2 · Wyświetleń: 966

eai
Napisane: 5.11.2008, 10:25:26





Grupa: Zarejestrowani
Postów: 367
Dołączył: 20.05.2005

Ostrzeżenie: (0%)
-----

Nie ma UTF-8 sam szukalem i nie znalazlem.
Wrzuciłem phpDoc do eclipse zrobiłem Search&Replace i mam UTF-8
  Forum: Gotowe rozwiązania · Podgląd postu: #533253 · Odpowiedzi: 2 · Wyświetleń: 3 511

eai
Napisane: 25.10.2008, 10:52:09





Grupa: Zarejestrowani
Postów: 367
Dołączył: 20.05.2005

Ostrzeżenie: (0%)
-----

zamiast: 'page/view/id/(d+).html',

daj 'page/view/id/(d+)\.html',

. - w wyrażeniu regularnym oznacza jakikolwiek znak
natomiast \. - to poprostu zwykła kropka (poprzez backslash usuwamy znaczenie specjalne)

Zainteresuj się też: http://pl.php.net/manual/pl/function.quotemeta.php
  Forum: Frameworki · Podgląd postu: #529805 · Odpowiedzi: 18 · Wyświetleń: 2 486

eai
Napisane: 23.07.2008, 18:43:40





Grupa: Zarejestrowani
Postów: 367
Dołączył: 20.05.2005

Ostrzeżenie: (0%)
-----

http://framework.zend.com/manual/en/zend.v....initial.action
  1. <?php
  2. action($action, $controller, $module = null, array $params = array('idapartment' => 'abc123'))
  3. ?>


4 parametr: tablica parametrów które zostaną przekazane do widoku i wtedy zadziała $this -> _request -> getParam('idapartment',0);
  Forum: Frameworki · Podgląd postu: #496837 · Odpowiedzi: 1 · Wyświetleń: 846

eai
Napisane: 23.07.2008, 18:39:51





Grupa: Zarejestrowani
Postów: 367
Dołączył: 20.05.2005

Ostrzeżenie: (0%)
-----

możesz np mieć dwa moduły: default i admin w default kontrolery frontowe, a w admin backend.
  Forum: Frameworki · Podgląd postu: #496835 · Odpowiedzi: 1 · Wyświetleń: 1 298

eai
Napisane: 30.12.2007, 22:43:07





Grupa: Zarejestrowani
Postów: 367
Dołączył: 20.05.2005

Ostrzeżenie: (0%)
-----

Jeśli + wstawiasz do adresu URL użyj: http://pl.php.net/manual/pl/function.urlencode.php

Czyli twój plus + będzie znakiem %2B

  1. <?php
  2. // Zamiast
  3. curl_setopt($curl, CURLOPT_POSTFIELDS,'name=alex&year=+');
  4.  
  5. //Powinno być:
  6. curl_setopt($curl, CURLOPT_POSTFIELDS,'name=alex&year=' . urlencode('+'));
  7. ?>
  Forum: PHP · Podgląd postu: #424826 · Odpowiedzi: 1 · Wyświetleń: 1 050

eai
Napisane: 30.12.2007, 11:37:12





Grupa: Zarejestrowani
Postów: 367
Dołączył: 20.05.2005

Ostrzeżenie: (0%)
-----

  1. <?php
  2. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  3.  
  4. $html = curl_exec($curl);
  5. curl_close($curl);
  6. ?>
  Forum: PHP · Podgląd postu: #424608 · Odpowiedzi: 8 · Wyświetleń: 2 141


New Posts  Nowe odpowiedzi
No New Posts  Brak nowych odpowiedzi
Hot topic  Popularny temat (Nowe)
No new  Popularny temat (Brak nowych)
Poll  Sonda (Nowe)
No new votes  Sonda (Brak nowych)
Closed  Zamknięty temat
Moved  Przeniesiony temat
 

RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 21:49