Na projekt muszę wykonać sklep internetowy w PHP. Ostatnie kilka projektów wykonałem na cakephp, ten muszę zrobić w czystym php, więc postanowiłem napisać swojego mini-quasi-frameworka, ale mam problem na starcie.
Chcę mieć klasę Model, która przetrzymywałaby w tablicy obiekty klasy atrybut. Potem mógłbym z tego ładnie sobie generować formularz lub podstawowe zapytania do SQLa.
Mam problem z zadeklarowaniem tablicy w klasie Model. W funkcji dodaj_atrybut elementy nie zapisują się.
Z góry dziękuję za pomoc.
<?php
/*
* class: Atrybut
* name: nazwa atrybutu uzywana w php
* name_in_db: nazwa atrybutu w bazie danych
* sql_type: typ w notacji sql
* form: tresc elementu (html) w formularzu np. <input ... />
*/
class Atrybut {
// var $name, $name_in_db, $sql_type, $form;
public function __construct() {
$this->name = '';
$this->name_in_db = '';
$this->sql_type = '';
$this->form = '';
}
}
class Model {
//tablica atrybutow
public function __construct() {
$this->atrybuty = array(); }
public function dodaj_atrybut($name,$name_in_db,$sql_type,$form)
{
$atr = new Atrybut;
$atr->name = $name;
$atr->name_in_db = $name_in_db;
$atr->sql_type = $sql_type;
$atr->form = $form;
//pokazuje 1111, za kazdym razem pokazuje, ze $atrybuty nie sa zadeklarowane
$atrybuty_l = count($atrybuty); $atrybuty[$atrybuty_l] = $atr;
}
public function lista_atrybutow()
{
$atrybuty_l = count($atrybuty); //echo $atrybuty_l;
// foreach ($atrybuty as $a)
for($i=0;$i<=$atrybuty_l;$i++)
{
'; Nazwa w bazie danych: '.$a->name_in_db.
'; Typ SQL: '.$a->sql_type.
'; Formularz: '.$a->form;
}
}
}
$post = new Model;
$post->dodaj_atrybut('nazwa', 'name', 'VARCHAR(10)', '<input type=""/>');
$post->dodaj_atrybut('nazwa', 'name', 'VARCHAR(10)', '<input type=""/>');
$post->dodaj_atrybut('nazwa', 'name', 'VARCHAR(10)', '<input type=""/>');
$post->dodaj_atrybut('nazwa', 'name', 'VARCHAR(10)', '<input type=""/>');
$post->lista_atrybutow();
?>
Wynik:
1111
Nazwa: ; Nazwa w bazie danych: ; Typ SQL: ; Formularz: