class 如何引入外部值?

发布于 2022-09-11 19:33:28 字数 1139 浏览 22 评论 0

问题一: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 ?能否透过继承?或其他方式。
谢谢大神解惑!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

苏璃陌 2022-09-18 19:33:29

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

桜花祭 2022-09-18 19:33:29

https://www.51-n.com/t-4004-1...
你可以看看这个,不知道能不能解决你的问题

勿忘初心 2022-09-18 19:33:28

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;')
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文