PHP类和函数

时间:2013-12-04 21:27:34

标签: php function class

在PHP中,我有3个单独的类,它们都完成不同的任务。但是,在两个或所有三个类之间共享许多函数。

  • 班级search
  • 班级data_table
  • 班级add_and_edit

这三个类都有一个纠正苏格兰和爱尔兰名字的功能(Mac Mc O'等),两个类共享一个字母标题函数,另外两个类共享第三个函数。

是否可以将共享函数合并到一个文件中,并在需要时使用类调用它们?

5 个答案:

答案 0 :(得分:1)

您需要的是继承结构。

〔实施例:

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中的函数(禁止从类外部调用这些函数),但仍然保留继承(子)类通过继承获取这些函数的能力。

答案 1 :(得分:0)

是的,这将是合乎逻辑的解决方案。我会创建一个父类,cay称为'parent',然后扩展其他类:

class child extends parent {}

将常用方法移动到父类。然后每个类仍然可以访问这些常用方法,并且您的代码应该像以前一样工作,除非您正在进行静态方法调用。

答案 2 :(得分:0)

解决方案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();
  }
}

答案 3 :(得分:0)

您可以创建一个控制器类,并让控制器中的三个类extend中的每一个都出现。

<?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 
   } 
} 

答案 4 :(得分:0)

我认为最好使用base类来保存一般函数并将其扩展到其他类中。必须定义常规函数protected