Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [biblioteka] Juborm
Forum PHP.pl > Inne > Oceny
ttmdear
Cześć,

Chciałbym się z wami podzielić moją biblioteką do obsługi bazy danych (mały system ORM).

http://ttmdear.github.io/jub-orm

Powstała ona na potrzeby mojej pracy inżynierskiej smile.gif
Pyton_000
Opis wygląda świetnie ale już kod nie koniecznie smile.gif

- Assercje są bez sensu. dla czego is_array zwraca tablicę zamiast true/false? Tak samo inne.
- hasIndex - isset zwróci false dla $tab['ddd'] = null, powinno być array_key_exists
- !is_null($msg) - lepiej by było !empty()

https://github.com/ttmdear/jub-orm/blob/mas...lder/Select.php
- rozbij to na metody
- kolejne:
Kod
        if (!is_null($where)) {
            $sql .= "WHERE $where\n";
        }

jak będzie '' to błąd wink.gif

Duużo kodu jest tam i sporo do poprawki takich pierdół.

- Brak composera smile.gif mega minus jak dla mnie tongue.gif
- jak już robisz:
Kod
$assert->exception("You can't use array append on entity.");
to wypadalo by łapać ten wyjątek.

Dalej nie chce mi się smile.gif To tak wyrywkowo.
ttmdear
@Pyton_000

Hej, dzięki za uwagi smile.gif

Te asercje wykorzystuje jako funkcje sprawdzające, wiec jeśli asercja się nie spełnia to
od razu wywalam wyjątek ponieważ dalsze działanie jest niemożliwe.

https://github.com/ttmdear/jub-orm/blob/mas.../src/Entity.php

  1. public static function table()
  2. {
  3. $assert = static::service('assert');
  4. $assert->notNull(static::$table, 'Each entity should have defined table.');
  5. return static::$table;
  6. }


Ogólnie cały czas pracuje na rozbudową i poprawą jakości. smile.gif
Pyton_000
No ja rozumiem do czego jest assercia, ale bez sensu jest zwracać wartość przekazaną. Lepiej już nic nie zwracaj i tylko rzucaj Exception jeśli nie spełnia assercji.

Zerknij na to: https://github.com/beberlei/assert/blob/mas...t/Assertion.php
ttmdear
Ok już rozumiem

Jest już composer smile.gif
nospor
$sql = "INSERT INTO $table (";

powinno byc

$sql = "INSERT INTO `$table` (";
(lub cos innego w zaleznosci od bazy)

bo jakis geniusz moze uzyc zastrzezonego slowa dla nazwy tabeli.

No i skoro uzywasz PDO z tego co zrozumialem to powinienies jechac na bindowaniu a nie recznym wkladaniu danych

edit: podobna z sytuacja z select i kolumnami

edit: no i takie pierdy jak to:
$where = "$expr";
gdzie powinno byc poprostu:
$where = $expr;

edit:
nie: strpos($column, '.') != false
a: strpos($column, '.') !== false
Przy strpos niesprawdzanie typow jest szczegolnie niebezpieczne

edit:
kody jak ten
  1. private function isSimpleString($string)
  2. {
  3. $re = "/^[a-zA-Z,_,0-9]*$/";
  4. $match = preg_match($re, $string);
  5. if (!empty($match)) {
  6. return true;
  7. }
  8. return false;
  9. }


powinno sie raczej skracac do takiej postaci:
  1. private function isSimpleString($string)
  2. {
  3. return (bool) preg_match('/^[a-zA-Z,_,0-9]*$/', $string);
  4. }


To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.