← Back to team overview

sslug-teknik team mailing list archive

Re: PHP : Globale Klasser ?

 

Mads Danquah wrote:
> Er der nogle der ved om man kan lave globale klasser i php (4) ??
Hvad mener du med "globale"?

> Hvis ikke, er der så nogle der har fundet ud af hvordan man kan få lov
> til at lave database kald fra en klasse med phplib (hvor databasekald
> foregå igennem et objekt)
Tja, jeg ved ikke lige, hvorledes det kan siges bedre end phplib's dokumentation. Nå, men:

I et projekt sørger jeg fx. for, at der på alle sider inkluderes følgende kode:
=======================================================
require_once('/home/httpd/phplib/current/php/db_mysql.inc');
class OurDB extends DB_Sql
{
        var $Database='ourdatabase';
        var $User=    'lowpriviligeuser';
        var $Password='somepassword';

        // I miss Java's super()
        // Maybe I have over-looked a similar PHP OO construct?
        function OurDB($query = "") {
                $this->query($query);
        }
}
=======================================================

Lad os sige, at ovennævnte kode er gemt i en fil kaldet "/home/httpd/includes/auto.php". Jeg kan nu få koden auto-inkluderet ved i php.ini at skrive
auto_prepend_file "/home/httpd/includes/auto.php"

- Eller i httpd.conf eller en passende .htaccess fil at skrive
php_value auto_prepend_file "/home/httpd/includes/auto.php"

Nu har jeg altid adgang til i min kode fx. at skrive:
-------------------------------------------------------
$db = new OurDB();

// We never trust data from the out-side.
$SQLname=addslashes($name);
$SQLemail=addslashes($email);

$SQL="
	select distinct name,address,email
	from MYTABLE
	where
		name='$SQLname' and
		email='$SQLemail'
";
$db->query($SQL);
$db->next_record();

// We make sure that special characters won't disturb our HTML
$HTMLname=   htmlspecialchars($db->f('name');
$HTMLemail=  htmlspecialchars($db->f('email');
$HTMLaddress=htmlspecialchars($db->f('address');

print "<p>Name: $HTMLname; e-mail: $HTMLemail, address: $HTMLaddress";
-------------------------------------------------------

I øvrigt vil jeg varmt anbefale diskussionsgruppen dk.edb.internet.webdesign.serverside til denne slags emner, som ikke er Linux-specifikke.

-- 
Greetings from Troels Arvin, Copenhagen, Denmark


References