请离开include_once和require_once_PHP教程
诚然, 这个理由是对的, 不过, 我今天要说的, 是另外一个的原因.
我们知道, PHP去判断一个文件是否被加载, 是需要得到这个文件的opened_path的, 意思是说, 比如:
set_include_path("/tmp/:/tmp2/");
include_once("2.php");
?>
当PHP看到include_once “2.php”的时候, 他并不知道这个文件的实际路径是什么, 也就无法从已加载的文件列表去判断是否已经加载, 所以在include_once的实现中, 会首先尝试解析这个文件的真实路径(对于普通文件这个解析仅仅类似是检查getcwd和文件路径, 所以如果是相对路径, 一般是不会成功), 如果解析成功, 则查找EG(include_files), 如果存在则说明包含过了, 返回, 否则open这个文件, 从而得到这个文件的opened_path. 比如上面的例子, 这个文件存在于 “/tmp2/2.php”.
然后, 得到了这个opened_path以后, PHP去已加载的文件列表去查找, 是否已经包含, 如果没有包含, 那么就直接compile, 不再需要open file了.
1. 尝试解析文件的绝对路径, 如果能解析成功, 则检查EG(included_files), 存在则返回, 不存在继续
2. 打开文件, 得到文件的打开路径(opened path)
3. 拿opened path去EG(included_files)查找, 是否存在, 如果存在则返回, 不存在继续
4. 编译文件(compile_file)
这个在大多数情况下, 不是问题, 然而问题出在当你使用APC的时候…
在使用APC的时候, APC劫持了compile_file这个编译文件的指针, 从而直接从cache中得到编译结果, 避免了对实际文件的open, 避免了对open的system call.
然而, 当你在代码中使用include_once的时候, 在compile_file之前, PHP已经尝试去open file了, 然后才进入被APC劫持的compile file中, 这样一来, 就会产生一次额外的open操作. 而APC正是为了解决这个问题, 引入了include_once_override, 在include_once_override开启的情况下, APC会劫持PHP的ZEND_INCLUDE_OR_EVAL opcode handler, 通过stat来确定文件的绝对路径, 然后如果发现没有被加载, 就改写opcode为include, 做一个tricky解决方案.
但是, 很可惜, 如我所说, APC的include_once_override实现的一直不好, 会有一些未定义的问题, 比如:
set_include_path("/tmp");
function a($arg = array()) {
include_once("b.php");
}
a();
a();
?>
然后, 我们的b.php放置在”/tmp/b.php”, 内容如下:
class B {}
?>
那么在打开apc.include_once_override的情况下, 连续访问就会得到如下错误:
Fatal error - include() : Cannot redeclare class
排除这些技术因素, 我也一直认为, 我们应该使用include, 而不是include_once, 因为我们完全能做到自己规划, 一个文件只被加载一次. 还可以借助自动加载, 来做到这一点.
你使用include_once,只能证明, 你对自己的代码没信心.
所以, 建议大家, 不要再使用include_once

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

vue3+vite:src utilise require pour importer dynamiquement des images et des rapports d'erreurs et des solutions. vue3+vite importe dynamiquement plusieurs images. Si vue3 est développé à l'aide de TypeScript, il y aura un message d'erreur indiquant que requireisnotdefined ne peut pas être utilisé comme imgUrl. :require(' .../assets/test.png') est importé car TypeScript ne prend pas en charge require, donc l'importation est utilisée. Voici comment le résoudre : utilisez waitimport.

Quelle carte mère ASUS faut-il associer au R55600 ? La carte mère ASUS ROGStrixB550-FGaming est un excellent choix. Il est parfaitement compatible avec le processeur Ryzen55600X et offre d'excellentes performances et fonctionnalités. Cette carte mère dispose d'un système d'alimentation fiable, peut prendre en charge l'overclocking et fournit une multitude d'emplacements et de ports d'extension pour répondre aux besoins quotidiens d'utilisation et de jeu. Le ROGStrixB550-FGaming est également équipé de solutions audio de haute qualité, de connexions réseau rapides et d'une conception de dissipation thermique fiable pour garantir que le système reste efficace et stable. De plus, cette carte mère adopte également le magnifique style ROG et est équipée de superbes effets d'éclairage RVB, ajoutant du plaisir visuel à votre ordinateur. Dans l’ensemble, ASUS ROGStri

Lorsque nous écrivons des pages Web en utilisant PHP, nous devons parfois inclure du code provenant d'autres fichiers PHP dans le fichier PHP actuel. À ce stade, vous pouvez utiliser la fonction include ou include_once pour implémenter l'inclusion de fichiers. Alors, quelle est la différence entre include et include_once ?

Lequel est le meilleur, Celeron g4900 ou i36100 ? En ce qui concerne les deux processeurs Celeron G4900 et I36100, il ne fait aucun doute que les performances du I36100 sont supérieures. Les processeurs Celeron sont généralement considérés comme des processeurs bas de gamme et sont principalement utilisés dans les ordinateurs portables économiques. Le processeur I3 est principalement utilisé pour les processeurs haut de gamme et ses performances sont très bonnes. Que vous jouiez à des jeux ou regardiez des vidéos, vous ne rencontrerez aucun décalage lors de l'utilisation du processeur I3. Par conséquent, si vous le pouvez, essayez d'acheter des processeurs Intel de la série I, en particulier pour les ordinateurs de bureau, afin de pouvoir profiter du plaisir du monde en ligne. Quelles sont les performances du Celeron G4900T ? Du point de vue des performances, le Pentium G4900T fonctionne bien en termes de fréquence. Par rapport à la version précédente, les performances du processeur sont.

Utilisation de require : 1. Introduire des modules : Dans de nombreux langages de programmation, require est utilisé pour introduire des modules ou des bibliothèques externes afin que les fonctions qu'ils fournissent puissent être utilisées dans le programme. Par exemple, dans Ruby, vous pouvez utiliser require pour charger des bibliothèques ou des modules tiers ; 2. Importer des classes ou des méthodes : dans certains langages de programmation, require est utilisé pour importer des classes ou des méthodes spécifiques afin qu'elles puissent être utilisées dans le fichier actuel. ; 3. Effectuer des tâches spécifiques : dans certains langages ou frameworks de programmation, require est utilisé pour effectuer des tâches ou des fonctions spécifiques.

J'ai l'intention de faire de la randonnée au Tibet ① Combien de litres de sac dois-je emporter ? S'il vous plaît, dites-moi quelle est, selon vous, la meilleure configuration. J'ai 170 ans et j'ai une bonne force physique. La première fois que je suis parti en randonnée, la quantité était de 60. litres ou plus. La quantité de randonnée était inférieure à 60 litres. Tout le trajet s'est fait en voiture. Vous n'avez pas besoin de sac à dos, une valise est plus pratique. Si vous avez vraiment besoin de transporter quelque chose avec vous, une valise de 25 à 40 litres. le sac est plus que suffisant. Fournitures nécessaires pour voyager au Tibet : lunettes de soleil, chapeau de soleil, crème solaire, crème pour la peau, baume à lèvres, hauts à manches longues, pull pour un voyage spécial ou un voyage à Ali, dans le nord du Tibet et sur la ligne Sichuan-Tibet ; il est recommandé d'apporter : un sac de couchage (protection contre le froid), des draps (protection contre la saleté), une doudoune, des chaussures de voyage ou de randonnée, des chaussons, une brosse à dents, du dentifrice, une serviette, du papier à rouler, des sous-vêtements en papier, des lingettes désinfectantes, une lampe de poche, des allumettes imperméables, des couteaux. , corde. Un ordinateur peut-il être transporté dans le sac avant ? Certains sacs à dos en sont équipés.

Lorsque les idéogrammes IA rivalisent pour le réalisme et le sens artistique, Ideogram a ouvert une voie délicate : il peut générer avec précision du texte sur des images, et les polices et mises en page sont magnifiques. Cette demande n'est pas une niche. Générez des affiches et des illustrations en un seul clic sans utiliser d'images P. Cela peut éviter bien des problèmes et convient très bien aux gens ordinaires qui ne connaissent rien au design. Nous avons déjà parlé de la version 1.0 d'Ideogram. Le 21 août, la version 2.0 est arrivée. Le réalisme est meilleur, les affiches sont plus conçues et la compétence particulière du texte est également plus forte. Vous n'en avez peut-être jamais entendu parler. Il s'agit d'un produit d'IA développé par d'anciens employés de Google. Il présente de nombreux défauts, mais le longboard peut « dépasser » Midjourney dans les virages. Itinéraire https://ideogram.ai/A

Lequel est le meilleur, Huntkey s980 ou Bauhaus ? Huntkey S980 et Bauhaus (BeQuiet) sont deux marques différentes de fabricants d'alimentations pour ordinateurs (PSU). Le meilleur choix dépend de vos besoins et de vos préférences personnelles. Il a été reconnu et salué par les consommateurs. Leurs produits sont largement utilisés dans les ordinateurs personnels, les serveurs, les équipements industriels et d'autres domaines. Huntkey s'engage à fournir des produits électriques de haute qualité et à introduire constamment de nouvelles technologies et des conceptions innovantes. Leurs produits sont soumis à un contrôle de qualité et à des tests stricts pour garantir qu'ils peuvent alimenter les appareils de manière stable et efficace. Huntkey prête également attention à la protection de l'environnement et à la conservation de l'énergie et s'efforce de réduire son impact sur l'environnement. Leurs alimentations sont conformes aux normes internationales et ont reçu de multiples certifications et récompenses. En tant que marque réputée
