brad-jones / import
此包已被废弃且不再维护。未建议替代包。
以某种方式包含PHP文件,使其与包含它的地方隔离开。
v0.0.4
2016-02-25 03:12 UTC
Requires (Dev)
- phpunit/phpunit: ^4.8
This package is not auto-updated.
Last update: 2021-05-01 00:26:39 UTC
README
以某种方式包含PHP文件,使其与包含它的地方隔离开。此包提供了一种新的伪语言构造,您将熟悉如何使用include
和require
,那么我们现在添加了import
。
感谢:https://gist.github.com/Eraknelo/6795b983825fc6a720ef
安装
composer require brad-jones/import
获取访问import函数的方法
有多种方法可以访问import函数。
-
如果使用PHP 5.6或更高版本,您可以导入import函数。
use function Brads\import; import(...args...);
-
或者您可以在Importer类上调用静态方法。
use Brads\Importer; Importer::import(...args...);
-
或者您可以创建一个Importer的实例。
use Brads\Importer; $importer = new Importer; $importer->newImport(...args...);
-
或者如果您想全局安装import函数。
Brads\Importer::globalise(); import(...args...);
依赖注入
导入器对Di & Test友好,它实现了ImporterInterface。
一个简单的php-di示例
use Brads\Importer; use Brads\ImporterInterface; $builder = new DI\ContainerBuilder(); $builder->addDefinitions ([ ImporterInterface::class => DI\object(Importer::class) ]); $container = $builder->build(); $container->get(ImporterInterface::class)->newImport(...args...);
示例用法
首先,假设foo.php
的内容是
<?php return get_defined_vars(); ?>
其次,假设我们只是使用全局化的import函数。无论您如何访问它,结果都是相同的。
导出值
import函数将返回导入文件返回的任何值。就像include
或require
一样。当与闭包和di容器结合使用时,您可以获得类似于node.js CommonJs模块系统的结果。
$exported = import('foo.php');
隔离导入
这个项目的整个目的是确保导入的文件不能访问父文件的任何变量。所以对于一个普通的include
或require
,您会得到这样的结果
$abc = '123'; $exported = include('foo.php'); var_dump($exported == ['abc' => '123']); // true
使用我们的import函数,这是发生的
$abc = '123'; $exported = include('foo.php'); var_dump($exported == []); // true
提供自定义作用域
有时我们可能希望导入的文件可以访问某些特定数据。
$abc = '123'; $scope = ['bar' => 'baz']; $exported = include('foo.php', $scope); var_dump($exported == $scope); // true
包含或require
在内部,import确实使用了正常的include
或require
。
默认情况下,我们使用require
,但您可以轻松地更改此设置。
import('foo.php', null, true); // requires foo.php import('foo.php', null, false); // includes foo.php