代码之家  ›  专栏  ›  技术社区  ›  jay

在PHP中何时使用类与函数

  •  59
  • jay  · 技术社区  · 15 年前

    我非常喜欢一个简单易懂的解释,说明在php中使用类比只使用函数更具优势。

    假设我有一个用php构建的迷你日历小部件。我正在考虑调用这个函数 miniCal('arrayVars1', 'var2')

    我应该在这里叫什么树,因为我觉得现在这棵树就像一堵砖墙。。。

    6 回复  |  直到 15 年前
        1
  •  57
  •   Kaleb Brasee    15 年前

    类用于将数据表示为对象。如果要表示用户数据或拍卖出价之类的内容,则创建用户对象或拍卖出价对象可以更容易地将这些数据保存在一起,在代码中传递,并使读者更容易理解。这些类将具有属性(数据字段,如数字、字符串或其他对象)以及方法(可以在任何类上操作的函数)。

    我建议你读这本书 PHP5 Object-Oriented Programming guide Wikipedia OOP entry

        2
  •  39
  •   Spade    9 年前

    自PHP5以来,一件常见的事情是创建充当库的类。这为您提供了组织功能和利用类特性(如_autoload())的好处;

    $encrypted_text = Encryption::encrypt($string);
    

    $decrypted_text = Encryption::decrypt($string);
    

    这样做的好处是:

    1. 您的加密功能被分组并组织起来。您和维护代码的任何人都知道在哪里可以找到加密功能。
    2. 您可以使用_autoload()自动包含该类。这意味着您可以像使用内置函数一样使用它。
        3
  •  9
  •   Julian    7 年前

    使用类是对函数进行分组的好方法。

    不同之处在于编程范式的使用。类在O.O.P.中是必需的,但在程序范式中不是必需的。在过程范例中,您可以将函数分组到一个文件中,该文件可以看作是一个模块。

    ---编辑---

    你可以用

    function miniCal($string_1, $string_2){
    //do something   
    }
    
    //invoke function
    miniCal('arrayVars1', 'var2');
    

    面向对象范式 . 需要上课。

    class Calculation {
    
    public static function miniCal($string_1, $string_2){
        //do something   
        }
    }
    
    //invoke function
    Calculation::miniCal('arrayVars1', 'var2');
    

    结论

    这两种范式都是可行的,但上面的OOP示例使用的是一个包含所有计算方法(函数)的计算对象。计算对象将计算函数分组,从而将它们保留在一个位置。

        4
  •  7
  •   John Doe    11 年前

    如果您的应用程序中有500个函数,您可能会希望将其中至少一半的函数分组到更大的集合中,以便于访问。您可以设计通用的命名约定(“加密”、“加密”、“解密”等)……但类更简单。如果您的应用程序中只有12个函数,那么可能只有1个或多个类(如果有的话)可以生存下来。

    我通常不需要在类中存储数据/属性。我倾向于将它们存储在数据库中。所以我没有经常利用课程的这一方面。

        5
  •  3
  •   Community pid    7 年前

    在回答这个问题时,我列出了一个使用OOP风格类的地方: https://stackoverflow.com/questions/2035449/why-is-oop-hard-for-me/2035482#2035482

    基本上,只要你想表示一个有东西在里面的对象。就像一个数据库变量,其中有一个唯一的连接。所以我会把它储存起来,这样我就能确保 mysql_query

    class MySQL extends Database
    {
        public function connect($host, $user, $pass, $database)
        {        
            $this->connection = mysql_connect($host, $user, $pass);
            $this->select_db($database);
        }
    
        public function query($query)
        {
            return mysql_query($query, $this->connection);
        }
    
        public function select_db($database)
        {
            mysql_select_db($database);
        }    
    }
    

    或者,您可能想要构建一个表单,您可以创建一个包含输入列表的表单对象,这样当您决定显示表单时,您就可以在表单中:

    class Form
    {
        protected $inputs = array();
        public function makeInput($type, $name)
        {
             echo '<input type="'.$type.'" name="'.$name.'">';
        }
    
        public function addInput($type, $name)
        {
             $this->inputs[] = array("type" => $type,
                    "name" => $name);
        }
    
        public function run()
       {
           foreach($this->inputs as $array)
           { 
              $this->makeInput($array['type'], $array['name'];
           }
        }
    }
    
    $form = new form();
    
    $this->addInput("text", "username");
    $this->addInput("text", "password");
    

    或者像其他人建议的那样,一个人:

    class Person{
    
        public $name;
        public $job_title;
        // ... etc....
    
    }
    

    所有这些都是创建类的原因,因为它们表示具有名称或职务等属性的对象,并且可能具有显示表单等方法。

        6
  •  1
  •   Priyank Dadhich    7 年前

    基本上两者都做相同的工作,但通过使用类,您可以更轻松地管理代码。还有一件事,如果我们使用类,那么我们必须创建用于调用其中定义的函数的对象,而如果我们直接创建函数,那么我们不需要创建对象。