Php 如何从类外获取类内变量

Php 如何从类外获取类内变量,php,mysql,Php,Mysql,我有个问题。如何在类中从类外获取变量 <?php include("Configuration.php"); $MySql = new MySql(); class MySql{ public function Connect(){ mysql_connect($ip, $login, $password); //error Undefined variable: ip,login,password }

我有个问题。如何在类中从类外获取变量

<?php
    include("Configuration.php");
    $MySql = new MySql();
    class MySql{
        public function Connect(){
            mysql_connect($ip, $login, $password); //error Undefined variable: ip,login,password
        }
        function SelectDatabase(){

        }
    }
?>
Configuration.php:

<?php
$ip = "localhost";
$db = "website";
$login = "";
$password = "";
?>
使用或将它们作为参数传入

公共功能连接{ 全局$ip、$login、$password; 公共函数Connect$ip、$login、$password{
将其添加到构造函数中

   include('Configuration.php');
   $MySql = new MySql($ip, $login, $password);
以及您的MySQL类:

class MySql
{

    protected $ip, $login, $password;

    public function __construct($ip, $login, $password)
    {
        $this->ip       = $ip;
        $this->login    = $login;
        $this->password = $password;
    }


    public function Connect()
    {
        mysql_connect($this->ip,
            $this->login,
            $this->password);
    }

    function SelectDatabase(){}

}
这是进一步开发的一点提示。您可能想将连接分配给对象中的属性,再次关闭它是一种很好的方式。它可能看起来像这样:

class MySql
{

    protected $ip, $login, $password, $conn;

    public function __construct($ip, $login, $password)
    {
        $this->ip       = $ip;
        $this->login    = $login;
        $this->password = $password;
    }


    public function Connect()
    {
        $this->conn = mysql_connect($this->ip,
                                    $this->login,
                                    $this->password);
    }

    public function closeConnection()
    {
         mysql_close($this->conn);
    }

}

是的,正如其他几个人所说,mysql\u connect等已被弃用,但我知道你知道。

这与你最初的问题无关,但请避免使用mysql\u…这些函数已被弃用。另外:请使用mysqli接口-mysql\u connect和朋友已经过时,很快将从PHP中删除。你为什么不直接使用我连接方法中的include?在类中使用mysql函数似乎是一种耻辱/浪费。我更喜欢这种方法,而不是我建议的方法。+1完成所有这些工作后,为什么不建议使用mysql解决方案呢?wink-一旦OP发现mysql函数被弃用,就需要完全重建。@Fred ii-你说得对。但我猜不是hat,当问这样一个基本问题时,OP现在处于学习状态,只是kata编码;所以当一些东西投入生产时,而不仅仅是沙箱,他可能离使用PDO还有好几英里远!我只是想为大家节省一点时间。他知道很多,所以我们最好使用$Lord_knows[]=你尝试;-我们的OT对话到此结束!@JakubTrzciński如果这个答案或任何其他给出的答案确实解决了问题,请将其标记为已接受,这就是堆栈系统的建立方式,为那些自愿花时间帮助解决问题的人提供声誉。你也要求这样做。