PHP OOP 帮助 - 进行中

PHP OOP Help - Work In Progress

我现在正在尝试编写一个 PHP class 来执行数据库信息。但是我觉得我做错了很多事!似乎您必须输入的内容才能使其正常工作。这是它的外观示例:

<?php

    class database {
        public $query_type = "";
        public $database_name = "";
        public $database_items_query = array();
        public $database_where = "";

        public function __construct($query_type, $database_name, $database_items_query, $database_where) {
            $this->query_type = $query_type;
            $this->query_name = $query_name;
            $this->query_items_query = $query_items_query;
            $this->query_where = $query_where;
        }   

        public function database_query($query_type, $database_name, $database_items_query, $database_where) {
            if ($query_type == "select") {
                return $sqlquery = "SELECT ($database_items_query) FROM $database_name WHERE $database_where";
            }
            elseif ($query_type == "update") {
                return $sqlquery = "UPDATE $databasename ";
            }
        }
    }

    $username = new database("");
?>

所以一开始你必须只输入这个才能让它运行第一个功能?

$username = new database("select","users","username","id");

所以基本上到目前为止,我做错了什么?对不起,如果这没有意义:(

好的,我明白你在做什么,构造函数通常用于 "Create" 对象。创建对象后,您就有机会在其中存储值,因此您不必 重新输入它们,你只需要在一个对象的生命周期中调用一次构造函数,你可以多次重用所有的方法。

soo... 如果您将 database_query 的方法声明更改为以下几行:

    public function database_query($database_items_query = $this->database_items_query, $database_where = $this->query_where) {
        $query_type = $this->query_type;
        $database_name = $this->database_name;

那么您将使用 class 变量作为默认值,因此您的代码将类似于

$columns = array("Name","Description");

$db = new database("SELECT","my_db",$columns,"1=1");
$db->database_query(); // returns name and description from all rows
$db->database_query(array("*") ); // returns all columns and rows
$db->database_query(array("*"),"id=7"); // returns all columns where id = 7

$other_db = new database("SELECT","my_other_db",$columns,"1=1");
$db->database_query(array("id") ); // calling database_query on first object instance 
$other_db->database_query(array("*") ); // calling database_query on second object instance 

当使用 objects/classes 时,您必须记住,您可以声明属于给定对象实例的变量,这样您就可以重新

不知道你的情况,但我在你这个年纪的时候写过一些 C 语言,为了接触 OO,我被描述为 classes 是内部带有函数指针的结构。

如果想学习面向对象,我建议看一看 java,因为那里有很多面向对象的第一原则,一旦熟悉了这种代码风格 将您所学的知识转化为您更了解的语言(在您的情况下 PHP。)