我希望我知道如何更恰当地搜索这个问题/短语。这妨碍了我寻找先前的问题;如果这是重复的,请耐心等待。
请参阅本文底部的更新/编辑
背景/我正在尝试做的事情:
我有一个看起来很像这样的 URL:
http://myapp.com/calculate//$fileID
_$calculateID
$fileID
并且$calculateID
是我用来跟踪数据集的键,我称之为“计算”。本质上,该 URL 表示$calculateID
对$fileID
.
我去我的数据库(mongo)并询问一个 php 类名或 sring 或文件路径,或者你有什么匹配$calculateID
的。例如,假设表格如下所示:
+-----+-------------------+
| _id | phpFile |
+-----+-------------------+
| 1 | basicCalcs.php |
| 2 | advancedCalcs.php |
| 3 | summaryCalcs.php |
+-----+-------------------+
注意:可以安全地假设phpFile
列中的每个文件都有一个公共接口/一组公共方法。
例子:
http://myapp.com/calculate/23/2
会去数据库,从 set 中获取数据23
,然后在advancedCalcs.php
. advancedCalcs.php
加载后,其中的一个函数将接收数据。从那里,对数据执行一组计算和转换。
我的问题
我的问题是什么是“laravel 4 友好”方式来动态加载advancedCalcs.php
数据并将数据输入一组方法?有没有办法延迟加载这种类型的东西。目前,我只知道非常简单的require_once()
方法。我真的很想避免这种情况,因为我确信 laravel 4 具有动态加载底层类并将其连接到公共接口的功能。
编辑 1
多亏了 Antonio Carlos Ribeiro,我才能取得一些进展。
运行 dump-autoload 命令后,我的vendor/composer/autoload_classmap.php
文件有几个新条目,如下所示:
'AnalyzeController' => $baseDir . '/app/controllers/AnalyzeController.php',
'AppName\\Calc\\CalcInterface' => $baseDir . '/app/calculators/CalcInterface.php',
'AppName\\Calc\\basicCalcs' => $baseDir . '/app/calculators/basicCalcs.php',
使用如下示例的代码,我可以创建 basicCalcs 类的实例:
$className = "AppName\\Calc\\basicCalcs";
$instance = new $className;
var_dump($instance);
文件basicCalcs.php
如下所示:
//PATH: /app/calculators/basicCalcs.php
<?php namespace Reporter\Calc;
class basicCalcs {
public function sayHi(){
echo("hello world! i am basicCalcs");
}
};
?>
更新的问题:
我怎样才能创建一个类似于AnalyzeController
条目 的别名,autoload_classmap.php
而不必basicCalcs.php
使用完整的命名空间来引用?