Momenteel ben ik bezig met het schrijven van een applicatie in PHP m.b.v. CodeIgniter die redelijk complex is.

Nu loop ik soms vast op de naamgeving binnen PHP, CSS etc.. Hoe pakken jullie dit aan? Nadat een gebruiker inlogd is komt hij op het dashboard van zijn account terecht. Hier ziet hij ook de login geschiedenis die de naam getLoginHistoryByID binnen PHP heeft. Is dat logisch?

Verder ben ik van plan om ook alle images namen en alle CSS content op de PHP manier te gaan verwerken. Zoiets als headerBackground en #headerMenu.

Graag zou ik hierover wat tips willen ontvangen omdat ik nu volgens mij te perfectionistisch te werk ga en ik op sommige dingen dus vast loop omdat ik continu bezig ben met de naamgeving.

Alvast bedankt!
In Active-Record:
<?php
abstract class Model
{
// Eoa DB abstractie laag
protected static $_db;

// De 'static method factory'
// Een statische methode die een klasse opbouwt
// (in het specifiek de 'eigen' klasse, omdat getById
// aangeroepen wordt op de User klasse en het dan User object teruggeeft

public static function getById($id)
{
// Roep de DB abstractielaag aan
// Laat hem $this->table gebruiken, dat wordt ingevuld
// Door de specifieke klasse, en het argument als ID
$data = self::$_db->select($this->_table, $id);

// Maak zichzelf aan
// Het 'static' keyword verwijst naar de uiteindelijke (sub)klasse, bijv. User
// Het 'self' keyword verwijst naar deze klasse, dus Model
// En laat deze vullen door de constructor
return new static($data);
}

// Vul het object met de data uit de array
// Niet noodzakelijk voor mijn verhaal
// Misschien wel leuk om naar te kijken
public function __construct(array $data = array())
{
// Vraag alle properties op
$properties = get_object_vars($this);

// Vul alleen de properties zonder _ vooraan. Zo kan je een onderscheid maken tussen hulpvariabelen en 'echte' variabelen die in de DB kunnen staan
$properties = array_filter($properties, function($prop) {
return strpos($prop, '_') !== 0;
});


// Als de naam van de een property voorkomt in $data, vul dan
// De property met de gegeven waarde
foreach($properties as $key => $val)
{
if(isset($data[$key]))
$this->$key = $data[$key];
}
}

// Ter volledigheid
public function save()
{
self::$_db->save($this);
}
}

class User extends Model
{
protected $_table = 'users';
protected $name;
protected $password;

public function getName()
{
return $this->name;
}

public function setName($name)
{
$this->name = $name;
}
}

//Gebruik:
$user = User::getById($id);
$user->getName();
$user->setName('Pim');
$user->save();

?>

[size=xsmall]Toevoeging op 20/12/2011 14:45:15:[/size]

Is het een beetje duidelijk?
Ah... dat ziet er mooi uit :)
Dankjewel!

Zou je die class Model in de praktijk ook zo noemen? Of noem je het dan anders?
Eh, AvtiveRecord oid

[size=xsmall]Toevoeging op 20/12/2011 16:24:48:[/size]

Leuk bruggetje naar de topic titel trouwens :-P
Ah oké, thanks Pim!
Pim, bedankt voor al die nuttige informatie, links en code die je telkens weer geeft! Het is echt een groot voorbeeld van hoe OOP eruit ziet en ik heb er veel aan!
Graag gedaan :-)
Ik moet toch iets verzinnen om de tentamenvoorbereiding nog wat uit te kunnen stellen :-P

Reageren