2017-10-10 2 views
0

Je travaille sur un projet en utilisant graphql-php. Il y a an example ce qui suggère la création d'une classe comme ceci:Nom de la méthode de classe dynamique dans php

use Project\CategoryType; 
use Project\PageType; 

class Types { 


private static $page; 
private static $category; 

    public static function page() { 
     return self::$page ?: (self::$page = new PageType()); 
    } 

    public static function category() { 
     return self::$category ?: (self::$category = new CategoryType()); 
    } 
} 

plus tard je peux utiliser ces méthodes de classe comme ceci:

Types::page() ou Types::category()

Cela fonctionne très bien. Cependant, je pense que c'est un anti-pattern et pourrait être optimisé. Au fur et à mesure que le projet grandit, le nombre de fonctions similaires et de champs de classe privée augmente et cela devient gênant. Existe-t-il un moyen de refactoriser la classe afin que je n'aie pas à ajouter manuellement une fonction pour chaque type, mais appelle quand même les méthodes de classe comme je le fais maintenant? (Types::page()).

+0

Oui, cela semble être la clé. Merci beaucoup. Voulez-vous s'il vous plaît poster une réponse afin que je puisse l'accepter ou devrais-je poster la solution complète moi-même? – Ssey

+0

Bienvenue. heureux d'entendre que cela a aidé. – tan

Répondre