Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Use i namespace, a ładowanie klas
bartek10
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 14.04.2013

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


Witam, jestem początkującym i mam takie może nietypowe pytanie. Otóż powiedzmy mam jedną klasę:

  1. <?php
  2.  
  3. namespace Class/Class1;
  4.  
  5. use Class/Class2
  6.  
  7. class Class1{
  8. $object = new Class2();
  9. }
  10. ?>


Jak widać, klasa Class1 i Class2 są w tym samym katalogu. No i problem polega na tym, że zgłasza mi błąd:
Cytat
Class 'Class1' not found


Co robię nie tak?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
!*!
post
Post #2





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


A gdzie autoloader? Poszukaj pod "SPL". Klasy same z sobie w PHP się nie ładują.

Ten post edytował !*! 14.04.2013, 10:39:26
Go to the top of the page
+Quote Post
bartek10
post
Post #3





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 14.04.2013

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


Ok, to w takim razie po co jest tak właściwie deklaracja use? Myślałem, że use powoduje załadowanie automatycznie klasy, w tym przypadku Class2...
Go to the top of the page
+Quote Post
Szymciosek
post
Post #4





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


Owszem, powoduje, ale do tego musisz mieć napisany autoloader. Jak już kolega wyżej napisał możesz skorzystać z https://www.google.pl/search?q=spl+autoload...920&bih=955
Go to the top of the page
+Quote Post
Pilsener
post
Post #5





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Cytat
jestem początkującym
- w takim razie rozsądnie będzie pominąć temat przestrzeni nazw, bo pewnie utrudnisz sobie tylko naukę. A jak już się upierasz, to powinieneś bez problemu wyczytać jak to działa i do czego służy "use" czy "namespace": http://www.php.net/manual/en/language.namespaces.php
Na początek radzę Tobie poczytać o:
- set_include_path
- spl_autoload_register
- PSR-0
Go to the top of the page
+Quote Post
mstraczkowski
post
Post #6





Grupa: Zarejestrowani
Postów: 273
Pomógł: 52
Dołączył: 3.02.2013
Skąd: Przemyśl

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


@Pilsener
Radzisz koledze ominięcie na razie tematu przestrzeni nazw, a za chwilkę sugerujesz mu na początek zapoznanie się ze standardem PSR-0, który de facto opiera się na używaniu namespace.

@Szymciosek
Samo use nie powoduje załadowania klasy przez autoloader, klasa zostanie dopiero załadowana po odwołaniu się do niej, np. przy tworzeniu jej obiektu.

Ten post edytował mstraczkowski 17.04.2013, 01:22:27
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 00:55