class 如何引入外部值?

问题一:Class 接收外部值?

class connection {
   var $host = 'XXXX';
   var $username = 'aaab';
   var $password = 'aaa';

   $do = new mysqli($host, $username, $password, $config['db']);
}

我在上方有根据 host 去改变 $config['db'] 的值
所以当在测试网域时读取A数据库,正式网域时读取B数据库
但我发现没办法丢这个进去,会显示错误
像一般的 function 可以用 global 接收外部的值
只要在里面加上 global $config; 就可以了
但在 class 裡面该如何达到呢?

问题二:在 class 中的 function 一定要透过 global 才能接收到外部值吗? (虽然一般 function 也要透过global,但我想说加上物件导向的原理,能否不需要?)

class get {
   public function get_information() {
      global $request;

      $render = mysqli_fetch_array($do->query(
         "SELECT * FROM `user`
         WHERE `session` = '{$request['session']}' "
      ));

      return $render;
   }
}

($do 先不管他,因为问题一仍在解决中,如果可以解决就可以用继承)
当使用 get classget_information()
在里面宣告 global $request; 为了接收外部值 $request
有什么方式可以不需要使用 global ?能否透过继承?或其他方式。
谢谢大神解惑!

阅读 3.3k
3 个回答

PHP Class 通过构造方法 __construct 传参。

举个例子:

<?php

class mydb {

    protected $use_dbname;
    
    protected $dbh;
    
    public function __construct( $host, $username, $password, $dbname ) {

        $this->dbh = new mysqli( $host, $username, $password, $dbname );
        
        // 将传入的参数赋值到内部变量就可以在内部其他地方调用了
        $this->use_dbname = $dbname;
    }
    
    public function query( $query ) {
        
        // 这里可以获取 $this->use_dbname
        
        $result = $this->dbh->query( $query );
        return $result;
    }

    // more 
}

// 使用
$mydb = new mydb( 'host', 'user', 'pwd', 'dbname' );
// $mydb->query('SELECT * FROM `user` WHERE user_id = 1;')

你对class是不是有什么误解??构造函数了解一下?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题