Hallo, ikke heb leren php'en met php4, maar nu zie ik allemaal nieuwe PHP scrips (zoals Walk of Fame) en daar maken ze gebruik van verschillende class dingen en heel veel functies.

Is er een goede tutorial om zoiets goed onder de knie te krijgen? Of om in iedergeval te snappen. Engels/Nederlands maakt niet uit.
'[php]global[/php]' bedoel je?

Ik heb het trouwens gedaan door in mijn index.php alle nodige klassen te includen (eigenlijk alleen base, debug, router en db, de rest include zichzelf wel) en ik maar de databaseconnecties in index.php, en de rest van mijn instellingen (config voor router, loggers voor debug e.d.) doe ik daar ook allemaal. Die geef ik in de constructor (of via een method, ligt eraan) mee aan de klasse, dus als parameter en niet als vaste variabele. Zo kan ik dus 3 database-instances maken met 3 verschillende instellingen.

Maak je klassen zo alleenstaand mogelijk! Geen vereiste global variabelen, geen onnodige afhankelijkheden. Dit maakt hergebruik het makkelijkst.
@jelmer,
Hoe zou jij dan een database connect klasse maken? Dus zo alleenstaand mogelijk.

Dat zou volgens mijn betekenen dat je veel variabele hebt, maar die buiten je functie of class. Of in andere woorden, een config waarin je alle variabele hebt en een function waarin je alle functies heb en dat je de variabele kan wijzigen maar de functions kan behouden.
En dat is wat ik probeer te maken.
Nouw jullie toch bezig zijn ik heb eigenlijk ook wel zo m'n vraagjes:)

Mag de vragen stellen van zim:)

Wat is eigenlijk het voordeel van één class met allemaal functies erin als allemaal losse functie's

en wat is eigenlijk verschil met:

<?php

class DB {

private $host = 'localhost';
private $user = 'user';
private $pass = 'password';
private $db = 'database';

public function __construct() {

$this->connect();

}

private function connect() {

mysql_connect($this->host, $this->user, $this->pass) or die(mysql_error());
mysql_select_db($this->db) or die(mysql_error());

}

}

?>

en

<?php

class DB {

private $host = 'localhost';
private $user = 'user';
private $pass = 'password';
private $db = 'database';

public function DB() {

$this->connect();

}

private function connect() {

mysql_connect($this->host, $this->user, $this->pass) or die(mysql_error());
mysql_select_db($this->db) or die(mysql_error());

}

}

?>

Want bij beiden zal de functie connect opgeroepen worden toch?

Maar waarom is een constructer dan beter?

En waarvoor is eigenlijk een destructer?

Na ja dat waren mijn vraagjes zo een beetje:)

GR. mebus

edit: eigenlijk zouden de echte OOP mensen onder ons hier eens een duidelijke tut over schrijven want op php.net word het me ook niet echt duidelijk gemaakt over hoe en wat.....
<?php
$connectie = new MySQLDatabase('localhost', 'root', 'password', 'tableName');
Base::register('database', $connectie);
$array = $connectie->fetchAll('SELECT * FROM tabel WHERE iets = :keyWord', array('keyWord' => $_GET['keyword']));
foreach($array as $regel) {
echo $regel['veldnaam'];
}
?>

Die 2e regel is voor klassen die toch graag een database connectie willen. Je kan ze eentje geven, maar ik ben een luie programmeur, en heb daar niet altijd zin in. Zo kunnen ze nog met Base::acquire('database') die database-instance raadplegen.
Mijn advies is PHP superboek van "Van Duuren Media"

Erg veel van geleerd...

Reageren