我正在尝试制作一个包含大量 CRUD 操作的 crm 应用程序。所以我有像这样的 Controller 类
CRM::Cities
CRM::Countries
不,我使用 ORLite 作为轻量级 ORM。它像这样动态创建类
Model::Cities
Model::Countries
现在假设我要加载一个城市。在 CRM::Cities 类中,我必须做类似的事情 (ORLite使用类方法进行访问)
$obj1 = Model::Cities->load($id);
要在 CRM::Countries 中加载当前国家/地区:
$obj1 = Model::Countries->load($id);
所以我最终在每个 Controller 类中包含相似的行。
我希望能够做的是在 CRM 包(基本 Controller 类)中执行类似这样的通用操作:
$obj1 = Model::$package->load($id);
# package contains Cities or Countries, determined at runtime
我尝试了各种变体,例如 eval 等等,但这是更高阶的 perl。我认为 b/c ORLite 方法是类方法,继承不太明显。有人可以给建议吗?蒂亚!
最佳答案
只需输入整个包名称,例如Model::Cities
,放入变量中。例如:
package Stuff::Yeah;
sub whatever {
print "yes\n";
}
package main;
my $package = "Stuff::Yeah";
$package->whatever;
关于perl - 如何调用类:method determined at runtime in perl?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12882554/