2.259 views
Ik heb hier de beginnershandeleiding (Lang woord =')) gelezen voor OOP maar ik zou graag verder gaan dan dat, heeft iemand nog goede tutorials die ook abstract classes etc. beter uitleggen.
<?php
class User
{
protected $name; // de naam
protected $rank; // de rank, member = 1 admin = 2
public function __construct( $name )
{
$this->name = $name;
$this->setRank(); // deze method moet worden gemaakt in de child class
}
public function getName()
{
return $this->name;
}
}
class Member extends User
{
protected function setRank()
{
$this->rank = 1;
}
}
class Admin extends User
{
protected function setRank()
{
$this->rank = 2;
}
}
$robin = new Member('robin');
$robin->getName(); // robin
$bas = new Admin('bas');
$bas->getName(); // bas
?>
<?php
abstract class User
{
protected $name; // de naam
protected $rank; // de rank, member = 1 admin = 2
public function __construct( $name )
{
$this->name = $name;
$this->setRank(); // deze method moet worden gemaakt in de child class
}
public function getName()
{
return $this->name;
}
// zorg dat we verplicht zijn een setRank method te maken
protected abstract function setRank();
}
class Admin extends User
{
protected function setRank()
{
$this->rank = 2;
}
}
class Beheerder extends User
{
public function editPage()
{
// doe wat leuks, merk op dat we hier geen setRank method maken
// we krijgen nu dus een error omdat deze method mist.
}
}
$robin = new User('robin'); // error, user is abstract en kunnen we dus niet aanmaken
$bas = new Beheerder('bas'); // werkt niet, door de error
$erik = new Admin('erik'); // werkt goed
?>
<!-- Gemaakt in de browser, vandaar geen whitespace. =)-->
<!doctype html>
<html lang="nl">
<head>
</head>
<body>
<?php
mysql_query("select info from table where id='$_GET['id']'"); //Query is waarschijnlijk niet juist, ik weet het. Vergeten hoe je ook alweer met get in een query werkt. =')
?>
</body>
Robin Van den Broeck op 05/02/2012 14:59:21
Erwin: waarom zou je in godsnaam gebruik maken van PHP om een HTML pagina op de maken? (Vooral de body) Misschien een CMS maar dan werk je beter met een DB. Even om het de verduidelijken wat ik bedoel.
<?php
interface Db {
public function connect();
public function error();
public function errorno();
public function escape($string);
public function query($query);
public function fetchArray();
public function fetchRow();
public function fetchAssoc();
public function fetchObject();
public function numRows();
public function close();
}
?>
<?php
class Mysql implements Db {
public function connect($username,$password,$server,$database){
mysql_connect($server, $username, $password);
mysql_select_db($database);
}
public function error() {
mysql_error();
}
public function errorno() {
mysql_errorno();
}
public function escape($string) {
mysql_real_escape_string($string);
}
public function query($query) {
mysql_query($query);
}
public function fetchArray($result) {
mysql_fetch_array($result);
}
public function fetchAssoc($result) {
mysql_fetch_assoc($result);
}
public function fetchObject($result) {
mysql_fetch_object($result);
}
public function fetchRow($result) {
mysql_fetch_row($result);
}
public function close() {
mysql_close();
}
}
?>
<?php
interface DB {
public function connect();
public function error();
public function errorno();
public function escape($string);
public function query($query);
public function fetchArray($result);
public function fetchRow($result);
public function fetchAssoc($result);
public function fetchObject($result);
public function numRows($result);
public function close();
}
?>
<?php
require("db.interface.php"); //Interface verkrijgen
class Mysql implements DB {
public function connect($server,$username,$password,$database){
mysql_connect($server, $username, $password) or die('Kan geen verbinding maken met de database server');
mysql_select_db($database) or die('Kan de db niet selecteren.');
}
public function error() {
mysql_error();
}
public function errorno() {
mysql_errorno();
}
public function escape($string) {
mysql_real_escape_string($string);
}
public function query($query) {
mysql_query($query);
}
public function fetchArray($result) {
mysql_fetch_array($result);
}
public function fetchAssoc($result) {
mysql_fetch_assoc($result);
}
public function fetchObject($result) {
mysql_fetch_object($result);
}
public function fetchRow($result) {
mysql_fetch_row($result);
}
public function numRows($result) {
mysql_num_rows($result);
}
public function close() {
mysql_close();
}
}
?>