如何在其他类之间使用PHP类

时间:2013-12-17 22:25:44

标签: php class oop object

我知道PHP的基础知识并且一般只使用它来调试WordPress代码,但现在我想编写自己的小程序来下载电子邮件并处理附件,我决定尝试使用类,因为我有对OO编程的基本理解。

请仔细阅读:我是新手!我不知道依赖注射是什么或意味着......

我的问题是我创建了一个名为printStatus()的函数,因此我可以打开/关闭评论输出。我正在看这个,我不确定它是否适合类结构,或者我是否需要在我创建的每个其他类中包含此函数?

基本上 - 如果我创建了一个类,我需要让它可用于所有其他类(即全局类),但我不确定这是否可以实现。

我的问题是:

  1. 我是否必须将printOutput类的引用传递给我用于提供给我的每个类,或者我可以全局声明它以使其可用于所有类或者我是否需要包括我创建的每个班级都有相同的功能吗?
  2. 我创建了一个MySQL Connection类,我将它传递给每个对象以供使用 - 应该(我可以)全局声明它并让它可供所有类使用吗?
  3. 感谢101。

    这是我的代码,我走的是正确的道路吗?:(具体参见printStatus()的参考资料)

    PS - $formatoutput->printStatus()在其他类中不起作用 - 我希望了解使其工作所需的结构。

    class.formatoutput.php

    class formatOutput {
    
        var $debug = true;
    
        function printStatus($text, $html = true) {
    
            if ($debug) {
                echo $text;
                echo $html?"<br/>\n":"\n";
            }
        }
    
        function printObjectStatus($object, $html = true) {
    
            if ($debug) {
                echo '<pre>';
                echo $text;
                echo $html?"</pre><br/>\n":"</pre>\n";
            }
        }
    }
    

    class.connection.php

    class Connection
    {
        var $db_host = "host";
        var $db_name = "name";
        var $db_user = "user";
        var $db_pass = "pass";
        var $db_conn;
    
        function connectToDatabase() {
    
            $db_conn = mysqli_connect($this->db_host, $this->db_user, $this->db_pass, $this->db_name);
    
            if (!$db_conn) {
                die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
            }
            else
            {
                $this->db_conn = $db_conn;
                $formatoutput->printStatus( "Connection established");
            }
            return $this->db_conn;
    
        }
    
        function closeConnection() {
            mysqli_close($this->db_conn);
            $formatoutput->printStatus( "Connection closed");
        }
    }
    

    class.customer.php

    class Customer {
    
        var $customer_id;
        var $customer_name;
    
        function getCustomer($connection, $user_id) {
    
            $query = "SELECT id, name FROM customer WHERE user_id=$user_id";
    
            $result = mysqli_query($connection, $query);
    
            if($result === FALSE) {
                die('Connect Error (' . mysqli_errno() . ') ' . mysqli_error());
            }
    
            $row_count = mysqli_field_count($connection);
            $formatoutput->printStatus( "COUNT: (".$count.")");
        }
    }
    

    的index.php

    include 'class.formatoutput.php';
    include 'class.connection.php';
    include 'class.customer.php';
    
    $formatoutput = new formatOutput();
    $formatoutput->printStatus('Start new Connection()');
    $connection = new Connection();
    $connection->connectToDatabase();
    $customer = new Customer();
    $customer->getCustomer($connection->db_conn, "1");
    $connection->closeConnection();
    

1 个答案:

答案 0 :(得分:1)

将函数printStatus声明为static

 static function printStatus($text, $html = true)

您可以使用“::”,

来调用此函数
 formatOutput::printStatus("hello");