💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
# inclued扩展 在运行时跟踪并转储文件包含和类继承的层次结构。 可以使用[include](https://www.php.net/manual/en/function.include.php),[include\_once](https://www.php.net/manual/en/function.include-once.php),[require](https://www.php.net/manual/en/function.require.php)或[require\_once](https://www.php.net/manual/en/function.require-once.php)[包括](https://www.php.net/manual/en/function.include.php)文件。 还报告了类继承依赖性 ## 要求 PHP版本5.1.0或更高版本。5.4+不再维护 随附的gengraph.php文件使用[»graphviz](http://www.graphviz.org/)库,但是,这不是必需的。 <https://pecl.php.net/package/inclued> 这些功能的行为受php.ini中的设置影响。 **包括配置选项** 名称默认可修改范围描述[inclued.enabled](https://www.php.net/manual/en/inclued.configuration.php#ini.inclued.enabled)关PHP\_INI\_SYSTEM是否启用包含。[inclued.dumpdir](https://www.php.net/manual/en/inclued.configuration.php#ini.inclued.dumpdir)**`NULL`**PHP\_INI\_SYSTEM存储包含文件的目录的位置(路径)。如果设置,则每个PHP请求都将创建一个文件。这些文件是[inclued\_get\_data()](https://www.php.net/manual/en/function.inclued-get-data.php)会生成的序列化版本,因此可以使用unserialize()进行反序列化 因为每个请求都会创建一个文件,所以该目录可能会很快填满!## **inclued\_get\_data**(void):数组 **示例** ``` <pre class="calibre10">``` include <span class="token2">'x.php'</span><span class="token3">;</span> $clue <span class="token1">=</span> <span class="token4">inclued_get_data</span><span class="token3">(</span><span class="token3">)</span><span class="token3">;</span> <span class="token4">print_r</span><span class="token3">(</span>$clue<span class="token3">)</span><span class="token3">;</span> ``` ``` 上面的示例将输出类似于以下内容的内容: ``` <pre class="calibre10">``` 数组 ( <span class="token3">[</span>includes<span class="token3">]</span> <span class="token1">=</span><span class="token1">></span>数组 ( <span class="token3">[</span><span class="token6">0</span><span class="token3">]</span> <span class="token1">=</span><span class="token1">></span>数组 ( <span class="token3">[</span>操作<span class="token3">]</span> <span class="token1">=</span><span class="token1">></span>包含 <span class="token3">[</span>op_type<span class="token3">]</span> <span class="token1">=</span><span class="token1">></span> <span class="token6">2</span> <span class="token3">[</span>文件名<span class="token3">]</span> <span class="token1">=</span><span class="token1">></span> x<span class="token3">.</span>php <span class="token3">[</span>opened_path<span class="token3">]</span> <span class="token1">=</span><span class="token1">></span> <span class="token1">/</span>tmp<span class="token1">/</span>x<span class="token3">.</span>php <span class="token3">[</span>fromfile<span class="token3">]</span> <span class="token1">=</span><span class="token1">></span> <span class="token1">/</span>tmp<span class="token1">/</span>z<span class="token3">.</span>php <span class="token3">[</span>fromline<span class="token3">]</span> <span class="token1">=</span><span class="token1">></span> <span class="token6">2</span> ) ) ) ``` ``` 有关使用此数据创建图形的方法,请参见下面的例子。 ## **实现包含在应用程序中的示例** 本示例演示了将其包含到现有应用程序中并查看结果的过程。 **Example#1在PHP应用程序本身中获取数据(函数)** ``` <pre class="calibre10">``` <span class="token">// File to store the inclued information </span> $fp <span class="token1">=</span> <span class="token4">fopen</span><span class="token3">(</span><span class="token2">'/tmp/wp.ser'</span><span class="token3">,</span> <span class="token2">'w'</span><span class="token3">)</span><span class="token3">;</span> <span class="token5">if</span> <span class="token3">(</span>$fp<span class="token3">)</span> <span class="token3">{</span> $clue <span class="token1">=</span> <span class="token4">inclued_get_data</span><span class="token3">(</span><span class="token3">)</span><span class="token3">;</span> <span class="token5">if</span> <span class="token3">(</span>$clue<span class="token3">)</span> <span class="token3">{</span> <span class="token4">fwrite</span><span class="token3">(</span>$fp<span class="token3">,</span> <span class="token4">serialize</span><span class="token3">(</span>$clue<span class="token3">)</span><span class="token3">)</span><span class="token3">;</span> <span class="token3">}</span> <span class="token4">fclose</span><span class="token3">(</span>$fp<span class="token3">)</span><span class="token3">;</span> <span class="token3">}</span> ``` ``` 现在已经存在一些数据,现在该以图形的形式来理解它们了。包含的扩展名包括一个名为gengraph.php的PHP文件,该文件创建一个需要[»graphviz](http://www.graphviz.org/)库的点文件。但是,此表格不是必需的。 **Example#2 gengraph.php使用示例** 本示例创建一个名为inclued.png的图像,其中显示了包含的数据。 ``` <pre class="calibre10">``` #首先,创建点文件 $ php gengraph<span class="token3">.</span>php <span class="token1">-</span>i <span class="token1">/</span>tmp<span class="token1">/</span>wp<span class="token3">.</span>ser <span class="token1">-</span>o wp<span class="token3">.</span>dot #接下来,创建图像 $ dot <span class="token1">-</span>Tpng <span class="token1">-</span>o inclued<span class="token3">.</span>png wp<span class="token3">.</span>dot ``` ``` **Example#3通过包含的转储列出数据(配置)** 当使用[inclued.dumpdir](https://www.php.net/manual/en/inclued.configuration.php#ini.inclued.dumpdir)指令时,每个请求都将转储文件(包括线索)。这是列出这些文件并反[序列化()](https://www.php.net/manual/en/function.unserialize.php)的一种方法。 ``` <pre class="calibre10">``` $path <span class="token1">=</span> <span class="token4">ini_get</span><span class="token3">(</span><span class="token2">'inclued.dumpdir'</span><span class="token3">)</span><span class="token3">;</span> <span class="token5">if</span> <span class="token3">(</span>$path <span class="token1">&&</span> <span class="token4">is_dir</span><span class="token3">(</span>$path<span class="token3">)</span><span class="token3">)</span> <span class="token3">{</span> echo <span class="token2">"Path: $path"</span><span class="token3">,</span> PHP_EOL<span class="token3">;</span> $inclues <span class="token1">=</span> <span class="token5">new</span> <span class="token4">GlobIterator</span><span class="token3">(</span>$path <span class="token3">.</span> DIRECTORY_SEPARATOR <span class="token3">.</span> <span class="token2">'inclued*'</span><span class="token3">)</span><span class="token3">;</span> <span class="token5">if</span> <span class="token3">(</span>$inclues<span class="token1">-</span><span class="token1">></span><span class="token4">count</span><span class="token3">(</span><span class="token3">)</span> <span class="token1">===</span> <span class="token6">0</span><span class="token3">)</span> <span class="token3">{</span> echo <span class="token2">'No clues today'</span><span class="token3">,</span> PHP_EOL<span class="token3">;</span> exit<span class="token3">;</span> <span class="token3">}</span> foreach <span class="token3">(</span>$inclues as $inclue<span class="token3">)</span> <span class="token3">{</span> echo <span class="token2">'Inclued file: '</span><span class="token3">,</span> $inclue<span class="token1">-</span><span class="token1">></span><span class="token4">getFilename</span><span class="token3">(</span><span class="token3">)</span><span class="token3">,</span> PHP_EOL<span class="token3">;</span> $data <span class="token1">=</span> <span class="token4">file_get_contents</span><span class="token3">(</span>$inclue<span class="token1">-</span><span class="token1">></span><span class="token4">getPathname</span><span class="token3">(</span><span class="token3">)</span><span class="token3">)</span><span class="token3">;</span> <span class="token5">if</span> <span class="token3">(</span>$data<span class="token3">)</span> <span class="token3">{</span> $inc <span class="token1">=</span> <span class="token4">unserialize</span><span class="token3">(</span>$data<span class="token3">)</span><span class="token3">;</span> echo <span class="token2">' -- filename: '</span><span class="token3">,</span> $inc<span class="token3">[</span><span class="token2">'request'</span><span class="token3">]</span><span class="token3">[</span><span class="token2">'SCRIPT_FILENAME'</span><span class="token3">]</span><span class="token3">,</span> PHP_EOL<span class="token3">;</span> echo <span class="token2">' -- number of includes: '</span><span class="token3">,</span> <span class="token4">count</span><span class="token3">(</span>$inc<span class="token3">[</span><span class="token2">'includes'</span><span class="token3">]</span><span class="token3">)</span><span class="token3">,</span> PHP_EOL<span class="token3">;</span> <span class="token3">}</span> echo PHP_EOL<span class="token3">;</span> <span class="token3">}</span> <span class="token3">}</span> <span class="token5">else</span> <span class="token3">{</span> echo <span class="token2">'I am totally clueless today.'</span><span class="token3">,</span> PHP_EOL<span class="token3">;</span> <span class="token3">}</span> ``` ``` 上面的示例将输出类似于以下内容的内容: ``` <pre class="calibre17">``` 路径:<span class="token1">/</span> tmp <span class="token1">/</span>包含 包含的文件:includ<span class="token3">.</span><span class="token6">56521.1</span> <span class="token1">-</span>文件名:<span class="token1">/</span>Users<span class="token1">/</span>philip<span class="token1">/</span>test<span class="token3">.</span>php <span class="token1">-</span>包含的数量:<span class="token6">1</span> 包含的文件:includ<span class="token3">.</span><span class="token6">56563.1</span> <span class="token1">-</span>文件名:<span class="token1">/</span>tmp<span class="token1">/</span>none<span class="token3">.</span>php <span class="token1">-</span>包含的数量:<span class="token6">0</span> 包含的文件:incleded<span class="token3">.</span><span class="token6">56636.1</span> <span class="token1">-</span>文件名:<span class="token1">/</span>tmp<span class="token1">/</span>three<span class="token3">.</span>php <span class="token1">-</span>数量包括:<span class="token6">3</span> ``` ```