Passer des variables à un objet avec une méthode statique
- Accueil
- Forum
- Programmation
- PHP
- Passer des variables à un objet avec une méthode statique
TheFlameflo Le 29 juillet 2016 à 19:56 (Édité le 25 janvier 2019 à 17:52)
Salut !
J'ai un petit problème.
Je souhait créer un autoloader à partir d'une méthode statique.
J'aimerais évite d'instancier l'objet, voici ce que je faisais avant :
Pouvez-vous m'aider et me guider ?
Merci d'avance à tous !
PS : Je sais que j'ai mis $this dans le code, je sais que ce n'est pas logique vu que ce n'est pas une instance, mais c'est en exemple ! 😀
J'ai un petit problème.
Je souhait créer un autoloader à partir d'une méthode statique.
J'aimerais évite d'instancier l'objet, voici ce que je faisais avant :
- J'instancie l'objet avec les paramètres
- J'appelle la méthode register()
namespace Framework;
class Autoloader
{
private $_namespace;
private $_path;
public function __construct($namespace, $path)
{
$this->_namespace = $namespace;
$this->_path = $path;
}
public function register()
{
spl_autoload_register(array(__CLASS__ , 'loadClass'));
}
public function loadClass($class)
{
if(preg_match('/^' . $this->_namespace . '/', $class))
{
$namespaceLength = strlen($this->_namespace);
$class = substr($class, $namespaceLength);
require $this->_path . '\\' . $class . '.php';
}
}
}
Appel de la méthode et instanciation de l'objet :
$autoloader = new Autoloader('MonNamespace', 'lechemin/');
$autoloader->register();
Voici ce que je souhaite faire :
- Appel statique de register avec en paramètres le namespace et le chemin
namespace Framework;
class Autoloader
{
private $_namespace;
private $_path;
public static function register($namespace, $path)
{
// Comment faire en sorte que ces deux variables passent à loadClass ?
$this->_namespace = $namespace;
$this->_path = $path;
spl_autoload_register(array(__CLASS__ , 'loadClass'));
}
public function loadClass($class)
{
//Utilisation des variables
if(preg_match('/^' . $this->_namespace . '/', $class))
{
$namespaceLength = strlen($this->_namespace);
$class = substr($class, $namespaceLength);
require $this->_path . '\\' . $class . '.php';
}
}
}
Je sais qu'on ne peut pas passer des variables vu que ce n'est pas une instance d'Autoloader, mais j'aimerais savoir comment je pourrais passer les variables malgré tout !
Pouvez-vous m'aider et me guider ?
Merci d'avance à tous !
PS : Je sais que j'ai mis $this dans le code, je sais que ce n'est pas logique vu que ce n'est pas une instance, mais c'est en exemple ! 😀
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte