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

Ocena, rady Autoloader php

Object Storage Arubacloud
+1 głos
382 wizyt
pytanie zadane 9 kwietnia 2016 w PHP przez Niespecjalny Gaduła (4,180 p.)
edycja 20 kwietnia 2016 przez Niespecjalny

Siemka,

Co jeszcze muszę poprawić aby moje wypociny były zgodne z PSR-4?

<?php

	namespace nostrict\autoloader;
	
	class AutoLoader{
		
		protected $_ns=[];//namespaces array
		
		protected $_dir;//autoloader catalog
		
		protected $_vendor;//vendor catalog
		
		protected $_class;//second index in namespace
		
		protected $_get;//first index in namespace
		
		public function __construct(){
			
			/*preparing variables*/
			$this->_dir=dirname(__DIR__);
			$this->_vendor=dirname(dirname($this->_dir)).DIRECTORY_SEPARATOR;
			
			$this->register();//start method with spl_autoloader
			
		}
		
		public function loadns($ns){
			
			if(isset($this->_ns[$ns]))return false;//checks if the namespace has been included
			
			$this->_ns[$ns]=json_decode(utf8_encode(file_get_contents($this->_dir.DIRECTORY_SEPARATOR.'namespaces'.DIRECTORY_SEPARATOR.$ns.'.json')),true);//get array from .json file
			
		}
		
		public function register(){
			
			spl_autoload_register(array($this, 'autoload'));//load spl
		}
		
		public function autoload($class){
			
			$this->_class=explode('\\',$class);//break $class into pieces
			
			/*include file width class*/
			$this->_get=$this->_class[0];
			unset($this->_class[0]);
			$this->_class=implode('\\',$this->_class);
			require_once rtrim(str_replace(['\\','/'],DIRECTORY_SEPARATOR,$this->_vendor.$this->_get.DIRECTORY_SEPARATOR.$this->_class.DIRECTORY_SEPARATOR.$this->_ns[$this->_get][$this->_class]),'\\').'.php';
		}
	}

Dzięki!

2 odpowiedzi

+1 głos
odpowiedź 9 kwietnia 2016 przez event15 Szeryf (93,790 p.)
wybrane 18 kwietnia 2016 przez Niespecjalny
 
Najlepsza
Obejrzyj sobie ten kod: http://www.php-fig.org/psr/psr-4/examples/

Zrobiłeś autoloader prawdopodobnie dla jednego projektu, lub szkieletu do jednego rodzaju projektów. Warto byś zrobił to w sposób nieco bardziej uniwersalny.

Namespaces powinny być w jakimś oddzielnym pliku konfigurowane - ale to raczej clean pierdoła.

O ile kojarzę to w PHP nie rozróżnia się zmiennych prywatnych w taki sposób jak Ty to robisz. Jednak to clean pierdoła.

Fajnie, że korzystasz z SPLa
komentarz 9 kwietnia 2016 przez Niespecjalny Gaduła (4,180 p.)
"O ile kojarzę to w PHP nie rozróżnia się zmiennych prywatnych w taki sposób jak Ty to robisz."

Mógłbyś to sprecyzować?

Dzięki
1
komentarz 9 kwietnia 2016 przez event15 Szeryf (93,790 p.)
1
komentarz 9 kwietnia 2016 przez efiku Szeryf (75,160 p.)

A jak już skończysz projekt i uznasz swoje dzieło za skończone, to zainteresuj się Composerem :) 

hmm przepchałbym jeszcze tą klasę przez php-cs-fixer od Fabiena z opcją fix klasa --level=psr2

Ode mnie Plusik za w miarę normalny kod. Chociaż, nie skracaj sobie zmiennych ;) 

komentarz 9 kwietnia 2016 przez Niespecjalny Gaduła (4,180 p.)
edycja 9 kwietnia 2016 przez Niespecjalny

"Chociaż, nie skracaj sobie zmiennych"


Czyżby chodziło to to $_ns?
Czy może o to zagnieżdżenie funkcji?

@event15 czyli tutaj rozchodzi się o to, że dla funkcji publicznych nie piszę "public"

Gdzieś kiedyś wyczytałem, że nie jest to konieczne, a skoro jestem typem człowieka, który woli ekstremalnie odchudzić kod nawet kosztem czytelności to szybko się przyzwyczaiłem do tej formy :D

komentarz 9 kwietnia 2016 przez efiku Szeryf (75,160 p.)
no to się odzwyczaj i pisz jak należy ;)
Spoko prymitywny autoloader Ci działa, wygląda OK.
Zainteresuj się Composerem, a właśnie... zrób jeszcze TDD do tego Auoloadera!
komentarz 9 kwietnia 2016 przez event15 Szeryf (93,790 p.)

ekstremalnie odchudzić kod nawet kosztem czytelności to szybko się przyzwyczaiłem do tej formy

No - będziesz pracować w zespole to zobaczysz, że Twoje preferencje jednak nie są wszystkim. Poza tym możesz pisać po swojemu i w PHPStormie zrobić Ctrl+Alt+L i kod się sam formatuje ^^ 

0 głosów
odpowiedź 17 kwietnia 2016 przez Niespecjalny Gaduła (4,180 p.)
edycja 17 kwietnia 2016 przez Niespecjalny
@ref

Proszę o ponowną ocenę :D
3
komentarz 18 kwietnia 2016 przez event15 Szeryf (93,790 p.)
Próbujesz stworzyć kod zgodny z PSR-4 zapominając o PSR-1 i PSR-2.

Jeśli chcesz sprawdzic, czy Twój kod jest zgodny z PSR-4 to przejdź do sekcji tests:

http://www.php-fig.org/psr/psr-4/examples/#unit-tests

I wykonaj je za pomocą komendy konsolowej w PHPUnicie. Jeśli będą wszystkie zielone, będzie to znaczyć, że wszystko jest spoko
komentarz 19 kwietnia 2016 przez Niespecjalny Gaduła (4,180 p.)
Więc jest tak jak w bazach danych? Nie da się zrobić skryptu w jednym standardzie, nie stosując się do poprzednich?
1
komentarz 19 kwietnia 2016 przez event15 Szeryf (93,790 p.)
Oczywiście, że da się. Po prostu chodzi o to, że widziałem już dużo czytelniejsze kody. Chociażby dlatego, że stosowały standardy formatowania kodu. No i są jeszcze te "Martinowe" standardy odnośnie nazewnictwa metod, zmiennych i klas. To wszystko poprawia czytelność :)
1
komentarz 19 kwietnia 2016 przez efiku Szeryf (75,160 p.)

@Niespecjalny kiedyś nam za to podziękujesz, serio ;) 

"że nie chcę rad typu przerzuć się na composera bo to będę robić"

Super! :) 

komentarz 20 kwietnia 2016 przez Niespecjalny Gaduła (4,180 p.)
edycja 20 kwietnia 2016 przez Niespecjalny
https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md

to nie jest jakiś fake?

bo to "Code MUST use 4 spaces for indenting, not tabs." to chyba lekka przesada :P

Patrze teraz na PHP FIG i to rzeczywiście prawda... Czemu to służy, jakiś pc nie obsługuje tabów?
2
komentarz 20 kwietnia 2016 przez event15 Szeryf (93,790 p.)
Jeśli to Ci przeszkadza to przeczytaj sobie STANDARD gwintowanych śrubek. Poza tym jeśli korzystasz z PHPStorma to wykonujesz kombinację klawiszy i nie musisz pamiętać o niczym - kod sie formatuje odpowiednio sam.
komentarz 20 kwietnia 2016 przez Niespecjalny Gaduła (4,180 p.)
"jeśli korzystasz z PHPStorma"

Jeżeli bym korzystał to bym nawet uwagi nie zwrócił.

Na chwilę obecną jestem zdania, że takie narzędzie będzie mi potrzebne jeżeli będzie zarabiać na siebie :/ Ale dzięki.

Chyba przepuszczę to przez php-cs-fixera.

Wracając do tematu zależało mi bardziej na tym standardzie przestrzeni nazw i autoloadera. Czy to tak miało wyglądać? Jeżeli nie to co muszę w tym zmienić? I proszę pomińmy na tą chwilę inne standardy bo szybciej mój monitor skończy jak laptop hubota niż przestawię się na 4 spacje zamiast taba.

A co do tych "gwintowanych śrub" już szukam.

edit: jesteś pewny że tak nazywał się ten standard?
1
komentarz 20 kwietnia 2016 przez event15 Szeryf (93,790 p.)
Zawsze można korzystać z NetBeansa. Poza tym PHPStorm jest darmowy dla OpenSource...

Odnośnie śrubek - sa standardy ISO bodajże, które są dostępne wyłącznie uczelniom.
komentarz 20 kwietnia 2016 przez Niespecjalny Gaduła (4,180 p.)
o to ja nie wiedziałem że jest za darmo :P

zerknę sobie, dzięki

Podobne pytania

0 głosów
2 odpowiedzi 303 wizyt
pytanie zadane 7 listopada 2017 w PHP przez `Krzychuu Stary wyjadacz (13,940 p.)
0 głosów
2 odpowiedzi 451 wizyt
pytanie zadane 29 stycznia 2017 w PHP przez niezalogowany
+1 głos
3 odpowiedzi 329 wizyt
pytanie zadane 15 sierpnia 2019 w C# przez luna22 Obywatel (1,420 p.)

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 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!

...