混淆使用Class over php functions()

时间:2014-01-18 12:48:40

标签: php function class oop methods

到目前为止,我只在php中使用了函数(),而且我对它很有帮助。在过去的几天里,我正在学习课程,因为我对此一无所知。在阅读了SO,php手册和其他教程中的大量信息后,我有点了解类,属性和方法的概述。但是,我仍然对如何使用它们感到困惑。

举一个例子,假设这些是我的atm功能:

function validate_text($xyz)   
{
    $xyz = trim($xyz);
    $xyz = htmlspecialchars($xyz); 
    return $xyz;
}

function validate_checkbox($values,$db)
{
    $stmt = $db->query("SELECT values FROM checkbox_info_table");   
    foreach ($stmt as $row)
    {
        $result_values[] = $row['value'];
    }   
    $filteredData = array_intersect($checkboxValues, $result_values);
    return $filteredData;

}

function fetch_checkbox($type,$db)
{
    $stmt = $db->query("SELECT * FROM checkbox_info_table WHERE type=$type");   
    foreach ($stmt as $row)
    {
        $row_id[] = $row['id'];
        $row_type[] = $row['type'];
        $row_values[] = $row['value'];
        $row_description[] = $row['description'];
    }   
    return array($row_id, $row_type, $row_values, $row_description);

}


etc...etc..

然后我将这些函数称为:

$name = validate_text($_POST["name"]);
$nickname = validate_text($_POST["nickname"]);

$carscheckbox = validate_checkbox($_POST['cars'], $db);
$bikescheckbox = validate_checkbox($_POST['bikes'], $db);
$planecheckbox = validate_checkbox($_POST['planes'], $db);    

$fetch_checkbox = fetch_checkbox($type, $db); //then storing the fetched array values to variables    

etc..etc..

我的问题是:

1)我何时决定使用类而不是函数的位置以及何时不使用类?

2)如果我在上面的例子中使用类代替函数会有什么好处?例如,上面例子中函数的使用本身就很容易。如果我将它们替换为课程,我将如何受益?

3)我总是更喜欢使用类而不是函数,或者每种函数都有它的优点和缺点吗?

4)有没有正确的方法来接近课程?人们通常如何决定?

5)函数和类之间的性能是否存在差异?

如果你可以进一步扩展这一点而不仅仅基于这个例子,那么我的学习曲线也会有所帮助。

1 个答案:

答案 0 :(得分:1)

类文件夹中名为 confirm.php的页面中的类的示例

class Category {

function get_category($link) {
  //rest of code
  } 
}

当您想在另一个.php文件中使用方法时,这非常有用。

例如,在php文件的顶部:

include 'class/confirm.php';
$category = new Category();

用法:

$type = $category->get_category(link);

通过这种方式,您可以确保您的课程干净,简单且易于维护。而不是将所有代码和功能集中在一个地方(更难阅读)。

此外,类通常意味着某些东西,或者可以用作其他东西的实用程序,例如仅在需要时使用类中的特定函数。您可以将其视为在任务之间建立关系和可靠性。

相关问题