2017-05-27 49 views
0

我有2個文件(Class),connect_db.php和manage.php,我想從Connect_db類中拉db連接的鏈接到管理類 但現在我仍然把相同的連接接收放在每個功能中,所以我只想在這個類中放一次,並且爲每個功能使用 。我聽到了Getter和Setter的概念,但我從來沒有使用過,也不確定它是否適合 這種情況。PHP,我怎樣才能從另一個文件接收連接的數據庫,以拋出每個函數

<?php 

//**connect_db.php** 

class connect_db 
{ 
    public function connect_db() 
    { 
     $link = new PDO("mysql:host=127.0.0.1;dbname=net_pracharat","root",""); 
     $link -> exec("set names utf8"); 

     return $link; 
    } 
} 

?> 




<?php 
//**mange_db.php** 

include("connect_db.php"); 

class mange 
{ 

    //How I can do set here and send to each function 

    public function view_process() 
    { 

     $link1 = new connect_db(); //************************** 
     $link = $link1 -> connect_db(); //************************** 
     //$link = $this->connect_db(); 

     $test_view = $link->prepare("SELECT * 
            FROM tbl_province"); 
     $test_view -> execute(); 
     $result = $test_view->fetchAll(PDO::FETCH_ASSOC); 

     return $result; 
    } 



    public function add_process() 
    { 
     $link1 = new connect_db(); //************************** 
     $link = $link1 -> connect_db(); //************************** 

     /* 
     Process 
     */ 

    } 

    public function edit_process() 
    { 

     $link1 = new connect_db(); //************************** 
     $link = $link1 -> connect_db(); //************************** 

     /* 
     Process 
     */ 

    } 

    public function delete_process() 
    { 
     $link1 = new connect_db(); //************************** 
     $link = $link1 -> connect_db(); //************************** 

     /* 
     Process 
     */ 
    } 

} 

?> 

回答

0

我看到很多選項。

  1. 初始化在構造
 
class mange { 

    private $db; 

    public function __construct() { 
     $connnect = new connect_db(); 
     $this->db = $connnect->connect_db(); 
    } 

    public function view_process() { 
     $this->db->prepare(); 
    } 

} 
  • 由設定器
  •  
    class mange { 
    
        private $db; 
    
        public function setDb($db) { 
         $this->db = $db; 
        } 
    
        public function view_process() { 
         $this->db->prepare(); 
        } 
    
    } 
    
    轉印
  • 我的最愛:在構造函數中初始化靜態方法
  •  
    class connect { 
    
        public static function connect_db() { 
         $link = new PDO("mysql:host=127.0.0.1;dbname=net_pracharat", "root", ""); 
         $link->exec("set names utf8"); 
    
         return $link; 
        } 
    
    } 
    
    class mange { 
    
        private $db; 
    
        public function __construct() { 
         $this->db = connect::connect_db(); 
        } 
    
        public function view_process() { 
         $this->db->prepare(); 
        } 
    
    } 
    

    當然,你也可以以其他方式發起一個靜態變量:

     
    class connect { 
    
        static $db; 
    
        public static function connect_db() { 
         if (!self::$db) { 
          $link = new PDO("mysql:host=127.0.0.1;dbname=net_pracharat", "root", ""); 
          $link->exec("set names utf8"); 
          self::$db = $link; 
         } 
         return self::$db; 
        } 
    
    } 
    

    看:http://sandbox.onlinephpfunctions.com/code/7c5e33dc6f31dcaf27b34675c00749893eaebe24

    相關問題