perl - 如何调用类:method determined at runtime in perl?

标签 perl class inheritance oop

我正在尝试制作一个包含大量 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/

相关文章:

perl - 我怎样才能将信息转发到另一个网站并获得其在 Perl 中的响应?

perl - 如何从 Perl 测试文件中检查文件的内容?

linux - 如何在perl中创建依赖进程

ruby - 'defining a method' 在语义上是如何工作的?

c++ - 模板<int v>类Foo的父类(super class)

c++ - 如何让子类指针指向基类指针?

c# - 每个继承的类的C#静态实例成员

perl - 通过引用调用模块函数

c++ - '&' 在类的一元运算符中意味着什么?

c++ - "ClassName ClassName::FunctionName"在 C++ 中是什么意思?