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

Wywołanie metody w konsturktorze

Cloud VPS
+1 głos
297 wizyt
pytanie zadane 8 kwietnia 2016 w PHP przez Niespecjalny Gaduła (4,180 p.)

Siemka,

Chciałbym się dowiedzieć czy wywołanie metody w konstruktorze nie jest błędem wg jakiegoś standardu lub czy nie niesie jakiegoś zagrożenia bezpieczeństwa :P

<?php
class Klasa{
    function __constructor(){
        $this->funkcja();
    }
    function funkcja(){
        return'wartość';
    }
}

coś takiego ^

1 odpowiedź

+1 głos
odpowiedź 8 kwietnia 2016 przez Fenix Nałogowiec (26,750 p.)
Jeśli podczas tworzenia instancji zostaną zainicjowane elementy współpracujące,
wynik jest przeważnie mało elastyczny i może powodować przedwczesne łączenie elementów, tak samo podczas gdy Twój konstruktor wyświetla jakikolwiek wynik, człowieczkowi korzystającemu z Twojej strony wyświetla się ten wynik nawet jeśli tego nie chce, lub nie chce w tym momencie.
komentarz 8 kwietnia 2016 przez Niespecjalny Gaduła (4,180 p.)
edycja 8 kwietnia 2016 przez Niespecjalny

Nie no to ma być prymitywny loader klas więc i tak muszę wywołać funkcję z tej klasy i dlatego się pytam czy to bezpieczne i czy ze standardami się nie kłuci.

To by było coś takiego

<?php
class Loader{
	private $_directory;
	function __construct(){
		$this->register();
	}
	function register(){
		spl_autoload_register(array($this, 'autoload'));
	}
	function autoload($class){
		$this->_directory=str_replace('\\', '/',$class);
		require_once'./vendor/'.$this->_directory.'.php';
	}
}
new Loader();

 

komentarz 8 kwietnia 2016 przez Fenix Nałogowiec (26,750 p.)
function __autoload($class_name) {
    include $class_name . '.php';
}

http://php.net/manual/pl/language.oop5.autoload.php

 

3
komentarz 8 kwietnia 2016 przez Boshi VIP (100,240 p.)

Wskazówka

spl_autoload_register() provides a more flexible alternative for autoloading classes. For this reason, using __autoload() is discouraged and may be deprecated or removed in the future.

Podobne pytania

0 głosów
2 odpowiedzi 530 wizyt
0 głosów
2 odpowiedzi 540 wizyt
0 głosów
1 odpowiedź 256 wizyt

93,487 zapytań

142,423 odpowiedzi

322,773 komentarzy

62,909 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
...