Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZendFramework]Ładowanie klasy z znakami _ .
szypi1989
post 27.01.2011, 15:28:23
Post #1





Grupa: Zarejestrowani
Postów: 207
Pomógł: 0
Dołączył: 7.09.2010

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


Witam.Gdy chce dla przykłady utworzyć obiekt klasy Form_Tab która dziedziczy po Zend_Form.Która znajduje się w folderze model to tworząc obiekt Zend szuka mi tej klasy jako Form\Tab.php.I nie mogę ładować tych klas które mają znak "_".Jak sobie z tym poradzić? proszę o pomoc
Go to the top of the page
+Quote Post
melkorm
post 27.01.2011, 16:11:36
Post #2





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


Tak działa autoloader Zend'a i jego konwencja nazw czyli gdzie underscore jest zamieniany na slash.

Poradzić hm szczerze to nigdy tego nie potrzebowałem, ogólnie nie używa się underscore jeżeli klasa nie jest w zagnieżdżonym folderze, można bawić się z autoloaderem, ale szczerze nigdy tego nie próbowałem smile.gif


--------------------
Go to the top of the page
+Quote Post
szypi1989
post 27.01.2011, 22:11:33
Post #3





Grupa: Zarejestrowani
Postów: 207
Pomógł: 0
Dołączył: 7.09.2010

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


właśnie pozmieniałem ten underscore na normalne znaki.Ale w przyszłości chciałbym wiedzieć czy jest jakieś wyjście na to.Bo w dokumentacji Zend czasami są takie przykłady właśnie połączone z underscore:-( i tylko trzeba usuwać to.
Go to the top of the page
+Quote Post
Crozin
post 27.01.2011, 22:25:18
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


PHP ma pewne konwencje co do nazewnictwa klas.

  • eżeli korzystasz z przestrzeni nazw stosujesz CamelCase (z wielką pierwszą literą każdego członu), czyli przykładowo:
    • MyProject\XML\XMLDocument
    • MyProject\XML\XMLDocumentParser
  • Jeżeli nie możesz skorzystać z przestrzeni nazw to wykorzystujesz znak podkreślenia do zobrazowania hierarchii:
    • MyProject_XML_Document
    • MyProject_XML_Document_Parser
Zauważ, że w zmiana nie dotyczy tylko "\" i "_".

Tych konwencji powinieneś się trzymać.

Ten post edytował Crozin 27.01.2011, 22:26:04
Go to the top of the page
+Quote Post
singles
post 28.01.2011, 09:12:41
Post #5





Grupa: Zarejestrowani
Postów: 121
Pomógł: 26
Dołączył: 2.07.2007

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


Cytat(szypi1989 @ 27.01.2011, 15:28:23 ) *
Witam.Gdy chce dla przykłady utworzyć obiekt klasy Form_Tab która dziedziczy po Zend_Form.Która znajduje się w folderze model to tworząc obiekt Zend szuka mi tej klasy jako Form\Tab.php.I nie mogę ładować tych klas które mają znak "_".Jak sobie z tym poradzić? proszę o pomoc

Bo ta klasa powinna znajdować się w folderze application/forms.

Tak jak wcześniej powiedziane, ZF zamienia nazwę klasy na jej lokalizację w strukturze plików.

Z tym, że domyślnie posiada zdefiniowanie kilka ścieżek do tzw. 'resource' - patrz tutaj => http://framework.zend.com/manual/en/zend.l...r-resource.html. Co to znaczy?

Znaczy to, że ZF będzie szukał klas na takiej zasadzie:
  1. $form = new Form_Tab() // => application/forms/Tab.php
  2. $model = new Model_Customer() // => application/models/Customer.php
  3. $plugin = new Service_FooBar() // => application/services/FooBar.php

Jednak należy zwrócić uwagę, że podczas ładowania klas Zend szuka automatycznie klas z dodanym prefixem aplikacji - domyślnie brzmi on "Application". Zmienia się to w pliku .ini:
Kod
appnamespace = "My"

Jeśli będziesz miał taki wpis jak wyżej, musisz nazywać klasy razem z tym prefixem, czyli My_Form_tab, My_Model_Customer. Aby ZF znajdował klasy bez prefixu, takie jak Twoja Zend_Tab musisz ustawić appnamespace na pustą wartość:
Kod
appnamespace = ""


Trochę więcej informacji na temat domyślnego autoloadera znajdziesz w tutorialu Roba Allena (dział Model): http://akrabat.com/zend-framework-tutorial/



Ten post edytował singles 28.01.2011, 09:14:51


--------------------
Works for me => u mnie działa - blog o (o)programowaniu i nie tylko
meet.php - darmowe meetupy związane z PHP
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.06.2025 - 14:25