Как получить доступ к соединению mysqli в другом классе на другой странице?

Как я могу открыть соединение с базой данных в классе пользователя, где я могу работать с базой данных? и почему нужно определять встроенные созданные функции в классе DBConnection .. ????

Я создал

  1. db.php
  2. user.php
  3. result.php

в db.php

class DBConnection { protected $mysqli; private $db_host="127.0.0.1"; private $db_name="test"; private $db_username="root"; private $db_password=""; public function __construct() { $this->mysqli=new mysqli($this->db_host,$this->db_username, $this-> db_password,$this->db_name) or die($this->mysqli->error); return $this->mysqli; } public function query($query) // why i need to creat this function { return $this->mysqli->query($query); } public function real_escape_string($str) { return $this->mysqli->real_escape_string(); } function __destruct(){ //Close the Connection $this->mysqli->close(); } } ?> 

в User.php

 <?php require "db.php"; class User { public function __construct($conn) { $this->mysqli=$conn; } public function addUser($name,$username,$email,$pwd) { $query=" "; $res=$this->mysqli->query($query); //pls chek the query function in DBConnection,what is the need to define query > function in DBConnection ? return $res; } } ?> 

в result.php

  <?php require "user.php"; $conn=new DBConnection(); if(isset($_POST['submit'])) { 
  $name = $conn->real_escape_string(trim(strip_tags($_POST['name']))); $username = $conn->real_escape_string(trim(strip_tags($_POST['username']))); $email = $conn->real_escape_string(trim(strip_tags($_POST['email']))); $password = $conn->real_escape_string(trim(strip_tags($_POST['pass']))); 
 //echo $name."".$username."".$email."".$password; $uObj=new User($conn); $uObj->addUser($name,$username,$email,$password); echo " hi your name is <I>".$name."</I> and your email ID is <I>".$email."</I>"; } ?> 

Solutions Collecting From Web of "Как получить доступ к соединению mysqli в другом классе на другой странице?"

Для вашего класса DBConnection потребуется дополнительный метод:

 public function getLink() { return $this->mysqli; } 

Кажется, что ваш оригинальный User класс был подклассом DBConnection , потому что свойство mysqli в DBConnection protected а класс User имеет parent::__construct() вызов.

Лучше использовать инъекцию зависимостей, поэтому ваш User класс получит соединение с базой данных через конструктор:

 public function __construct(DBConnection $db) { $this->mysqli = $db->getLink(); } 

Затем из вашего кода вы можете запускать:

 $db = new DBConnection; $uObj = new User($db);