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

Ocena, rady Autoloader php

Cloud VPS
+1 głos
654 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 426 wizyt
pytanie zadane 7 listopada 2017 w PHP przez `Krzychuu Stary wyjadacz (13,940 p.)
0 głosów
2 odpowiedzi 783 wizyt
pytanie zadane 29 stycznia 2017 w PHP przez niezalogowany
+1 głos
3 odpowiedzi 484 wizyt
pytanie zadane 15 sierpnia 2019 w C# przez luna22 Obywatel (1,420 p.)

93,487 zapytań

142,423 odpowiedzi

322,773 komentarzy

62,908 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

Kursy INF.02 i INF.03
...