簡體   English   中英

如何在父類PHP中調用函數?

[英]How to call a function in parent class PHP?

我有兩個PHP類。 第一個是這樣的:

<?php 
     $myclass = new MainClass;

     class MainClass{
              public $login;

              public function __construct(){
                  require_once('login.class.php');
                  $this->login = new login;
              }

              public function mysql(){
                  mysql_connect("localhost","root","");
              }   


     }
?>

我的Login類是:

<?php

   class Login{

           public function checkDB(){
               //**** how do I call mysql on MainClass here ?*****
          }
    }
?>

我需要提及的是,登錄不是Main Class的子類。 所以我想知道如何從Login Class調用MainClass上的mysql函數嗎?

方法1 :派生類

<?php
require_once('MainClass.php'); // MainClass store as a php file
   class Login extends MainClass{

           public function checkDB(){
               $this->mysql(); //**** call mysql from MainClass here
          }
    }
?>

方法2 :對象實例

<?php
require_once('MainClass.php'); // MainClass store as a php file
$check_mysql = new MainClass();

   class Login extends MainClass{

           public function checkDB(){
               $check_mysql->mysql(); //**** call mysql from MainClass here
          }
    }
?>

注意:不要使用MySQL函數,因為它們已被棄用,因此請使用mysqliPDO連接數據庫。

使用此代碼,您只需創建MainClass對象並調用mainClass函數。

<?php

class Login{

       public function checkDB(){
           $main = new MainClass();
           $main->mysql();
      }
}
?>

如果您想為此使用面向對象的處理程序,而不是重新發明輪子,請使用mysqli類。 這里的文檔,下面的代碼示例:

class Login extends mysqli {
  public function __construct($loginid) {
    $this->id = $loginid; // example of wrapping
    parent::__construct( /* login constants go here */ );
  }
  . . .
  // other functions that can have direct access to the mysqli:: class
}

正如shapeshifter在評論中所說,您想要一個可以從其他類中引用的類。 相反,我可能會做這樣的事情:

<?php
$database = new MainClass();
class Login
{
   public function checkDB($database)
   {
       $database->mysql();
   }
}
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM