我怀疑也许有人可以在这里回答。 我的代码工作得很好,但我很安静,我做错了。 必须有一种更简单,更清洁的方法来实现它。
假设这个类:
class myClass {
public static function myFunctionOne ($arg_one, $arg_two, $arg_tree) {
echo $arg_one;
myClass::$arg_two($arg_tree);
}
public static function myFunctionTwo ($arg_four) {
echo $arg_four;
}
}
然后你在某处调用Class(我的情况是一个PHP文件中构建的HTML菜单),如下所示:
myClass::myFunctionOne('echo a string', 'myFunctionTwo', 'echo forth value');
这很好用,它输出:
echo a string echo forth value
但它合法吗?
对我来说看起来很粗略。 我可以使用这样的函数,在带参数的函数中使用Argumetns调用函数吗?
答案 0 :(得分:2)
在PHP中,这称为Variable Functions。基本上,附加(
的任何变量都将用作要调用的函数或方法的名称。
如果需要传递多个参数,可以将最终函数的参数作为数组传递,然后在调用最终变量函数时解压缩数组。
但是,由于其他原因,它可能不是一个很好的设计模式,这可能会使代码难以维护。对myClass::myFunctionOne()
的调用者来说,myClass
的调用者可能违反Abstraction的主体,必须知道 trait Crud[M] {
import slick.lifted.TableQuery
def generateScript[T , F ](callback:(TableQuery[_]) => String);
def create(model: M): Any;
def update(model: M): Future[Int];
def findByID(id: Long): Future[Option[M]];
def read(): Future[List[M]];
def delete(model: M): Future[Int];
def createTable(): Unit;
}
class CrudImpl[V, M <: DefaultModel[Option[Long]], T <: AbsTable[M]](tableQuery: TableQuery[T]) extends Crud[M] {
....
}
val crudUser: Crud[User] = new CrudImpl[Option[Long], User, UserTable](TableQuery[UserTable]);
具有哪些方法/函数以及他们采用了什么参数。
请注意,我在这里使用术语“函数”,但如果它在一个类中,则称为“方法”。