• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

psr-4 częściowy problem z ładowaniem klas

Object Storage Arubacloud
0 głosów
220 wizyt
pytanie zadane 20 listopada 2016 w PHP przez Karol Wiczling Początkujący (430 p.)

Witam, 

Mam mały problem z psr-4 i automatycznym ładowaniem klas.

<?php
include_once "../config/config.php";

use classes\controllers\MainController;

$cont = new MainController();

Gdy używam powyższego zapisu (czyli zaznaczam dokładnie który plik chcę dodać) wszystko działa jak należy ale kiedy zmienię na


use classes\controllers;

To dostaję błąd : Fatal error: Class 'MainController' not found in D:\PHP\htdocs\thb\web\index.php on line 6

A według tutoriala z którego to ogarniałem ta krótsza forma powinna działać.

 

1 odpowiedź

+1 głos
odpowiedź 20 listopada 2016 przez HaKIM Szeryf (87,590 p.)
edycja 20 listopada 2016 przez HaKIM

No nie do końca.

W przypadku:

	
use classes\controllers;

to trochę jakbyś oczekiwał wyciągnięcia wszystkich klas z danego zbioru.

A fully qualified class name has the following form:

\<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>

http://www.php-fig.org/psr/psr-4/#2-specification

 Do wyciągnięcia większej ilości klas możesz zastosować:

PHP 7+

namespace Foo{
	class Foo{
		
	}
	class Bar{
		
	}
}

namespace App{
	use Foo\{Bar, Foo};
	new Bar();
	new Foo();
}

http://php.net/manual/en/language.namespaces.importing.php#language.namespaces.importing.group

Również może się przydać:

https://github.com/php-fig/fig-standards/blob/master/proposed/extended-coding-style-guide.md#example

komentarz 20 listopada 2016 przez Karol Wiczling Początkujący (430 p.)

Czyli wszytko działa tak jak powinno i w takim przypadku muszę odwoływać się do konkretnej klasy. 

Myślałem że robię coś nie tak. Sugerowałem się tym materiałem i zrozumiałem że wystarczy odnieść się do folderu i zostanie on przeszukany by znaleźć moją klasę. Dzięki teraz mogę żyć spokojniej :)

komentarz 20 listopada 2016 przez HaKIM Szeryf (87,590 p.)

Ta, też się z tego uczyłem.

Na filmie widać jednak, że nawet nie sprawdził czy zwróci to błąd - a zwróci.

<?php

namespace Foo
{
	class Foo
	{
		public function __construct()
		{
			print 'Foo!';
		}
	}
	
	class Bar{
		public function __construct()
		{
			print 'Bar!';
		}
	}
}

namespace Client
{
	use Foo;
	
	class Client
	{
		public function __construct()
		{
			new Foo();
			new Bar();
		}
	}
	
	new Client();
}

FATAL ERROR Uncaught Error: Class 'Foo' not found in /home/phptest/public_html/code.php70(5) : eval()'d code:29 Stack trace: #0 /home/phptest/public_html/code.php70(5) : eval()'d code(34): Client\Client->__construct() #1 /home/phptest/public_html/code.php70(5): eval() #2 {main} thrown on line number 29

Kod działający:

<?php

namespace Foo
{
	class Foo
	{
		public function __construct()
		{
			print 'Foo!';
		}
	}
	
	class Bar{
		public function __construct()
		{
			print 'Bar!';
		}
	}
}

namespace Client
{
	use Foo\{Foo, Bar};
	
	class Client
	{
		public function __construct()
		{
			new Foo();
			new Bar();
		}
	}
	
	new Client();
}

Foo!Bar! 

(Kod oddaję tak dla pewności). wink

Podobne pytania

0 głosów
1 odpowiedź 1,611 wizyt
pytanie zadane 14 maja 2017 w PHP przez Benek Szeryf (91,110 p.)
0 głosów
4 odpowiedzi 331 wizyt
pytanie zadane 22 marca 2018 w PHP przez Mebya Użytkownik (700 p.)
0 głosów
0 odpowiedzi 161 wizyt
pytanie zadane 30 grudnia 2017 w PHP przez Paweł123 Nałogowiec (33,500 p.)

92,626 zapytań

141,486 odpowiedzi

319,844 komentarzy

62,009 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...