Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to access constant defined outside class?

I have defined some constants eg:

define('DB_HOSTNAME', 'localhost', true);
define('DB_USERNAME', 'root', true);
define('DB_PASSWORD', 'root', true);
define('DB_DATABASE', 'authtest', true);

now when I try to do this:

class Auth{
function AuthClass() {
$this->db_link = mysql_connect(DB_HOSTNAME, DB_USERNAME, DB_PASSWORD) 
or die(mysql_error());
}
}

I get an error. Why is this and what do I need to do?

See, I've tried using (for example) global DB_HOSTNAME but this fails with an error.

The error I am getting is:

Unknown MySQL server host 'DB_HOSTNAME' (1)

like image 750
Mazatec Avatar asked Jun 11 '10 15:06

Mazatec


Video Answer


2 Answers

When the script runs, both the constant and the class definitions should be included.

e.g.

constants.php.inc

define('DB_HOSTNAME', 'localhost', true);
define('DB_USERNAME', 'root', true);
define('DB_PASSWORD', 'root', true);
define('DB_DATABASE', 'authtest', true);

Auth.php.inc

class Auth{
    function AuthClass() {
        $this->db_link = mysql_connect(DB_HOSTNAME, DB_USERNAME, DB_PASSWORD) 
           or die(mysql_error());
    }
}

script.php

include "constants.php.inc";
include "Auth.php.inc";

//do stuff
like image 165
Artefacto Avatar answered Oct 23 '22 07:10

Artefacto


It should work as long as you've defined the constants before AuthClass() runs. If they are not in the same file as your Auth class, you will first need to include them within the file that Auth resides in so it can see them:

include("the_file_that_has_those_constants_in_it.php");

Then it should just work. Constants are already global so there is no need to use the global keyword.

like image 45
alexantd Avatar answered Oct 23 '22 06:10

alexantd