Cytat(Damonsson @ 8.07.2015, 23:05:52 )

Apache? Oprócz blogów na Wordpressie, chyba już nikt tego nie używa.
Ja nawet do tego go nie używam

Co do kodu, to poczepiam się

- PSR 0-4 tak jak mówił kolega @Damonsson, od konwencji nazewnictwa, przez klamry, po autoload Composer. Dlaczego? Wygoda.
- Używanie OR i AND. Zemści się to na Tobie. Poczytaj o mocy operandów.
- lib/html.php - Już lepiej wrzucić to do jakiegoś pliku helpers.php jako zwyczajne funkcje.
- lib/session.php - get i destroy będą rzucać błędami. Nie masz sprawdzania czy klucz istnieje. Można dodać ew. domyślny parametr jak nie znajdzie klucza, przydaje się często. Można jeszcze kilka metod dopisać np. has,
- lib/route.php i lib/router.php - bad idea. Nazwy będą się mylić. route.php - znowu brak sprawdzania kluczy przy pobieraniu.
- bootstrap.php - a czemu nie routes.php skoro są tam deklaracje adresów?
-
Kod
<?php if (!is_bool($this->valid) AND is_array($this->valid)): ?>
wystarczy samo is_array()

i znowu AND
- View.php
Kod
public function __construct($name)
{
if(file_exists(DIR_VIEWS.$name.'.php'))
{
$this->template = $name;
}
else
{
throw new Exception('Nie znaleziono widoku: '.$name);
}
}
Po co ten else? Nie uważasz że to jest czytelniejsze?
Kod
public function __construct($name)
{
if(!file_exists(DIR_VIEWS.$name.'.php')) {
throw new Exception('Nie znaleziono widoku: '.$name);
}
$this->template = $name;
}
Dalej...
Kod
public function render()
{
// wyswietlam widok
if(!empty($this->template) AND file_exists(DIR_VIEWS.$this->template.'.php'))
{
include_once DIR_VIEWS.$this->template.'.php';
}
}
Tutaj tak na prawdę zostaje tylko to:
Kod
public function render()
{
include_once DIR_VIEWS.$this->template.'.php';
}
Sprawdzanie masz w konstruktorze przecież. Po co 2x to samo robić. Tą walidację też można do oddzielnej metody przenieść.
- database.php @instance() - To masz bez sensu bo:
Kod
if(!self::$instance instanceof Database)
będzie zawsze prawdą, $instance będzie instancją PDO a nie Database
- Controller_Auth
Kod
// obsluga formularza
if(isset($_POST['send']))
{
$valid = $model_Auth->loginValidation($_POST);
if($valid === TRUE)
{
$model_User = new Model_User;
$userid = $model_User->getIdFromName($_POST['name']);
// loguje użytkownika
Auth::instance()->login($userid);
// przekierowanie na glowna strone
header('Location: /');
exit;
}
}
Nie można tego było przenieść po prostu do oddzielnej metody jako punkt obsługi formularza? Wtedy słałbyś form na tą metodę i sobie działał.
- Rozumiem że logowanie usera to tylko taki mały żarcik i że nie chciało Ci się nic w tym kierunku robić

- Nazwy klas typu: Controller_Base. Już chyba wiem skąd to Ci się wzięło. Skoro uczyłeś się na Kochana czy czymś innym, to tam są takie nazwy. Ale są dlatego że dzięki nim robiony jest autoload.
Tak, wystarczy zamienić _ na / i masz ścieżkę do klasy

-
Kod
// --- Ladowanie modulow, np. od logowania, sesja ---
global $modules;
Wywal to zanim ktoś to zobaczy

-
Kod
public function after()
{
if($this->view instanceof View)
{
// -- CSS i Javascript --
$this->view->_script = array();
$this->view->_style = array(
'/media/style.css'
);
// -- Wstawiam dodatkowe dane do widoku --
$this->view->logged = $this->logged;
// -- Wyswietlam widok --
$this->view->render();
}
else
{
throw new Exception('Nie ustawiono zadnego widoku do wyswietlenia.');
}
}
Prawda że czytelniej? I nie musisz potem całego dobrego kodu pakować w tego nieszczęsnego IF
Kod
public function after()
{
if(!($this->view instanceof View)) {
throw new Exception('Nie ustawiono zadnego widoku do wyswietlenia.');
}
// -- CSS i Javascript --
$this->view->_script = array();
$this->view->_style = array(
'/media/style.css'
);
// -- Wstawiam dodatkowe dane do widoku --
$this->view->logged = $this->logged;
// -- Wyswietlam widok --
$this->view->render();
}
Ogólnie moja uwaga jest taka. Staraj się stosować jak najmniej zagłębień kodu. czyli nie rób 10x IF w IF.
Staraj się układać tak warunki żeby kod był czytelniejszy. Nie sądzisz że skoro masz sprawdzanie czegoś od czego zależy czy dana metoda przejdzie czy nie to lepiej to umieścić jako pierwszy warunek i wysypać błąd niż pisać kolejne IF?
To tak na szybko zebrane do kupy. I na prawdę poczytaj o PSR-... Nie chcesz namespace? to nie stosuj. Nikt tego nie nakazuje.
Pozdrawiam i siema