2016-08-12 4 views
-2

Les développeurs PHP qui utilisent des fonctionnalités de classe dans leurs projets devraient faire beaucoup de cirque pour charger une classe spécifique avant de les utiliser. php __autoload() (sera déconseillé à l'avenir), spl_autoload_register(), psr-0 & psr-4 standards pour les charger automatiquement. La fonction __autoload() ou d'ailleurs spl_autoload_register() (avec les chemins de toutes ses classes) définie par exemple dans start.php doit d'abord être incluse dans l'index ou quelle que soit la page php, puis faire votre travail avec l'objet classe chargé. Dans psr-0 & psr-4, nous configurons composer.json en définissant le chemin psr-0 ou psr-4 ou classmap du chargement automatique vers le dossier du fournisseur. Faites dump-autload, incluez ce single généré autoload.php dans votre fichier php et psr-4 convention de "use" "namespace" dit pour rendre notre vie beaucoup plus facile (ce qui n'est pas le cas). En java, définissez des classes sous packages, puis importez simplement la classe requise et utilisez-la.Pourquoi le chargement de classes de php n'est-il pas aussi simple que java "import"?

Ma question est, pourquoi le chargement de classes php n'est pas aussi simple que les paquets java & importer?

Je sais qu'il pourrait y avoir des difficultés de mise en œuvre si ce n'est presque impossible. Quelques milliers de nouvelles lignes de code c sinon lakhs ne ralentiraient certainement pas l'interpréteur php pour aider à trouver les noms de classes qui sont mentionnés dans le mot-clé import et charger cette classe des paquets comme java, au lieu de ces conventions fastidieuses (spl_autoload_register(), psr-0, psr-4) qui sont supposés faciliter le chargement des classes. J'ai utilisé Java dans la plupart de mes projets. donc, je suis nouveau à php et le genre de question pourrait être bien attendu qui pourrait apparaître plutôt noob one. Les réponses sont très appréciées. Merci.

+0

Parce que vous devriez normalement dire 'include_once 'otherFile.php';'? –

+1

@rabbit, mec, savez-vous ce que include_once fait sérieusement? Je pense, nous avons bien passé cette étape include_once dans _autload(), spl_autoload_register(), le fichier de chargement automatique de composer.json. –

+2

Mec, vous avez posté ci-dessus que vous voulez savoir comment faire quelque chose, vous avez donné zéro code, vous n'avez même pas poster votre fichu code pour montrer ce que vous faisiez, puis quelqu'un a suggéré d'utiliser include_once et vous les avez attaqués. Et puis vous vous asseyez là en vous demandant pourquoi les gens ne vous aident pas. –

Répondre

1

Eh bien, c'est le cas.

Les PSR ne sont (actuellement) que des recommandations pour les implémentations de framework. C'est-à-dire, à moins que vous n'écriviez un framework ou un package, cela ne vous est pas vraiment destiné. Il se trouve juste qu'un certain nombre de développeurs PHP aiment suivre les normes de toute façon (en particulier les PSR 1, 2 et 12). En l'occurrence, les exemples PSR-4 utilisent tous spl_autoload_register(), ce qui est un moyen plus pratique d'inclure des packages et des classes, sans avoir besoin de include_once. PSR-4 est seulement une recommandation par un organisme séparé du langage PHP, et est relativement récent, c'est pourquoi vous pouvez implémenter spl_autoload_register() comme vous le souhaitez. Cependant, include_once est toujours une méthode valide pour charger une classe, et si vous me demandez peut souvent être la meilleure méthode, et (n'étant pas un développeur Java) je suppose est aussi simple que l'équivalent en Java.

+0

haha. Je vous remercie. Ma question était vraiment jolie.Je pense que @rabbit y a déjà répondu. Mais je n'ai pas compris ce qu'il a dit. Maintenant, vous l'avez clairement fait comprendre. Désolé le lapin. –