php exiger appel de classe de l'intérieur de la méthode
à partir de ma compréhension, exiger colle le code dans la vocation fichier php.
que faire si vous avez été exigeant à l'intérieur de la méthode...il serait collez le code entier/classe à l'intérieur de la méthode, le blocage de l'instruction suivante dans la méthode.
par exemple.
function test() {
require 'pathtosomeclasscode';
somestatement; //any code after the require is blocked.
}
comment puis-je contourner ce problème, afin de pouvoir exiger de code où, sans qu'il soit collé à cet endroit précis?
Pourquoi serait-il bloquer la prochaine déclaration?
il va mettre tout le code de la forme, par exemple. la classe étant collé à l'intérieur de la fonction
Ce n'est pas ce qui se passe. Je l'ai dit dans ma réponse, mais je vais renforcer ici: est-il d'une erreur ou d'un dysfonctionnement que vous rencontrez qui vous fait croire que c'est le cas? Si oui, veuillez nous fournir plus de détails afin que nous puissions corriger la source du problème.
icio est correct. Cela fonctionne bien (voir mon exemple de code ci-dessous). Si vous utiliser require_once, et votre fichier inclus juste définit une classe, alors vous êtes essentiellement paresseux de chargement de la définition de la classe, bien que de manière un peu désordonnée.
il va mettre tout le code de la forme, par exemple. la classe étant collé à l'intérieur de la fonction
Ce n'est pas ce qui se passe. Je l'ai dit dans ma réponse, mais je vais renforcer ici: est-il d'une erreur ou d'un dysfonctionnement que vous rencontrez qui vous fait croire que c'est le cas? Si oui, veuillez nous fournir plus de détails afin que nous puissions corriger la source du problème.
icio est correct. Cela fonctionne bien (voir mon exemple de code ci-dessous). Si vous utiliser require_once, et votre fichier inclus juste définit une classe, alors vous êtes essentiellement paresseux de chargement de la définition de la classe, bien que de manière un peu désordonnée.
OriginalL'auteur Jeremy Gwa | 2010-05-02
Vous devez vous connecter pour publier un commentaire.
Étonnamment, cela semble très bien fonctionner. Inclus code s'exécute à l'intérieur de la portée de Baz::bork() -- mais il suffit que le code définit une classe, et de classe mondiale. Si vous vous retrouvez avec une classe définie.
Fichier: Foo.php:
Fichier: Baz.php:
De sortie:
Maintenant, je ne peux pas penser à de nombreux endroits où vous aimeriez faire les choses de cette façon. Habituellement, les gens require_once() d'éventuelles dépendances au sommet de leur fichier de classe, en dehors de la définition de la classe.
require_once $dirName . "/../{$fileName}.php";
Que faire si le fichier spécifie également un espace de noms, est-il gérer cela correctement? Oui, il a fait le travail.
C'est aussi utile pour le conditionnel/retard de chargement de code. Par exemple. un plugin wordpress pourrait avoir le code qui est utilisé uniquement sur les frontend/backend/appel ajax/page spécifique etc. Depuis les plugins de charge avant que l'on sache qui page/post, vous êtes sur, vous avez besoin de retarder le chargement qui dans la note wp est fait avec des actions, qui feront appel oui, une fonction... Cela peut accélérer les choses côté serveur, mais aussi éviter de charger inutilement styles et des scripts de réduire inutile demandes...
OriginalL'auteur timdev
Appel
require
,require_once
,include
ouinclude_once
ne arrêter l'exécution de code à l'intérieur de votre fonction sauf si il y a un problème avec le script inclus. Le code dans le fichier inclus est exécuté dans le même portée que la fonction (avec des fonctions et des classes mondiale), n'est pas inséré dans, en remplacement de quoi d'autre est là.Autres réponses vous recommandons d'utiliser l'une des solutions de rechange à
require
comme une solution, ces solutions peuvent travailler pour vous si l'erreur dans vos scripts est à voir avec un conflit de nommage (c'est à dire à une tentative de redéfinition d'une classe ou d'une fonction), sinon vous pouvez nous donner plus de détails de ce qui a été (ou n'a pas eu lieu) pour vous faire croire qu'il y a un problème pour que nous puissions vous aider à résoudre la cause réelle.Sur une autre note, ces inclusion de fichier les méthodes ne sont pas coller code dans le script. Coller est un outil que les gens utilisent pour maintenir texte. Je vous suggère de lire le manuel PHP pour essayer et approfondir votre compréhension de la façon dont ces fonctions de travail:
require
require_once
include
include_once
Poster à nouveau si vous avez d'autres questions sur leur travail après la recherche dans les.
OriginalL'auteur icio
essayer require_once? Juste au cas où votre y compris d'ailleurs.
OriginalL'auteur Titan
Si vous utilisez include_once('script.php') vous ne rencontrerez pas des erreurs sur les classes être redéclarée.
Je n'ai pas essayé le suivant moi, mais je pense que cette configuration peut également travailler si vous ne voulez pas include_once() de manière redondante:
Vous pouvez ensuite appeler le code, à chaque appel d'une fonction dans la même classe d'objet:
OriginalL'auteur buley
Je pense que ce que vous dites, c'est que vous ne voulez pas le code à exécuter immédiatement. Si c'est correcty, vous avez plusieurs options:
Vous pouvez déplacer le besoin.
Vous pouvez également lire les fichier avec fopen(), puis de l'analyser. (Vous ne pouvez pas appeler eval, car il ne comprends pas le code HTML, mais vous pouvez le faire avec un analyseur)
OriginalL'auteur waiwai933
Que je vois, vous êtes à l'aide de fichiers externes pour le chargement des classes, suis-je la corriger? Pourquoi n'utilisez-vous pas D'Auto-Chargement Des Classes. Je sais que ça ne fonctionnera pas lorsque vous voulez charger une classe différente des corps dans des circonstances différentes, mais je ne sais vraiment pas si c'est une bonne pratique.
OriginalL'auteur