在PHP中,我有三个独立的类,它们都在执行完全不同的任务。然而,许多函数在两个或全部三个类之间共享。
- 类别
search
- 类别
data_table
- 类别
add_and_edit
这三个类都有一个函数来纠正苏格兰和爱尔兰名称(Mac Mc O'等),两个类共享一个字母头函数,不同的两个类共有第三个函数。
是否可以将共享函数集中到一个文件中,并在需要时用类调用它们?
您需要的是一个继承结构。
Exmaple:
class meta{
protected function add(args){
}
protected function edit(args){
}
protected function delete(args){
}
}
/*@description This class get all the 3 methods from the meta class*/
class search extends meta{
}
/*@description This class get all the 3 methods from the meta class*/
class data_table extends meta{
}
/*@description This class get all the 3 methods from the meta class*/
class add_and_edit extends meta{
}
使用受保护的函数向公共API隐藏函数(禁止从类外调用这些函数),但仍保留继承(子)类以通过继承获得这些函数的能力。
我认为最好使用base
类来保存您的通用函数,并将其扩展到其他类中。必须定义通用函数protected
是的,这将是这里的逻辑解决方案。我会创建一个名为"parent"的父类,然后扩展其他类:
class child extends parent {}
将通用方法移动到父类。然后,每个类仍然可以访问这些通用方法,并且您的代码应该像以前一样工作,除非您正在进行静态方法调用。
解决方案1:继承
你的问题很不具体,这将反映在我的回答中。我想你要找的是遗产。
继承允许您有一个带有函数的类,然后让其他类继承这些函数。
class A {
public function x();
}
class B extends A {
public function y();
}
现在,类B将同时具有方法x()和y()。你甚至可以进一步嵌套,例如
class C extends B {
public function z()
}
因此,C现在拥有所有的x()、y()和z()。此外,您可以让一个类从多个类继承。不过,在继承时要小心,最终可能会出现复杂的类层次结构、紧密耦合和大量依赖关系。
解决方案2:静态类
您可以将名称更正函数与其他类分离,并将它们存储在一个静态类中,然后从任何需要的地方调用,例如
class A {
public static function nameThingy() {
// ...
}
}
class B {
public function something() {
A::nameThingy();
}
}
class C {
public function somethingElse() {
A::nameThingy();
}
}
您可以创建一个控制器类,并让这三个类中的每一个都扩展到控制器之外。
<?php
class app_controller {
public static function name_correction( $name ) {
// process
return $fixed_name;
}
}
class search extends app_controller {
// ...
private function action() {
// code ...
$do_something = self::name_correction( $name );
// code
}
}
class data_table extends app_controller {
// ...
private function another_action() {
// code ...
$do_something = self::name_correction( $name );
// code
}
}
class add_and_edit extends app_controller {
// ...
private function another_action() {
// code ...
$do_something = self::name_correction( $name );
// code
}
}