Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Query builder w bibliotece do obsługi bazy danych
czychacz
post
Post #1





Grupa: Zarejestrowani
Postów: 189
Pomógł: 13
Dołączył: 20.09.2008
Skąd: Lublin

Ostrzeżenie: (0%)
-----


BoltDB
Pod powyższym linkiem znajduje się kod inicjacyjny dla biblioteki do obsługi bazy danych, którą tworzę. Po co? Żeby poćwiczyć niektóre rzeczy.
Na razie działa tylko budowa prostego SELECTa poprzez klasy Select i SelectAbstract z odpowiednich namespaców.
Chciałbym, żeby ktoś rzucił na to okiem (głównie namespace
Cytat
BoltDb\Engine\Mysql\Query
i
Cytat
BoltDb\Engine\Query
). Od siebie mogę dodać, że prawdopodobnie kiepsko wymyśliłem zależności między interfejsami, traitami i klasami abstrakcyjnymi. Jak Wy byście to widzieli?

//edit: Dodałem prosty tekst Readme

Naprawdę nikt nie ma nic do dodania? Czy może mój kod jest tak sh*towy, że nikt nie chce go przeglądać? (IMG:style_emoticons/default/brzydal.gif)

Ten post edytował czychacz 3.08.2017, 15:32:53
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
primosz67
post
Post #2





Grupa: Zarejestrowani
Postów: 17
Pomógł: 2
Dołączył: 26.10.2013

Ostrzeżenie: (0%)
-----


Cześć,

Z góry powiem, że nie patrzyłem w kod i moje rady są na podstawie README.md.

1. Chłopaki mają racje popracuj nad api. Może nawet zacznij od niego.

  1. $connection = new \BoltDb\Connection();
  2. $pdo = new PDO('mysql:dbname=my_database;host=127.0.0.1;port=3306', 'username', 'password');
  3. $connection->connect($pdo);
  4.  
  5.  
  6. $select->fromTable(['alias' => 'name_field', new \BoltDb\Query\Expression('tbl.*')], 'data', 'tbl', 'my_schema');


Staraj się, żeby metoda nie posiadała więcej niż 2 parametry max 3.

  1. $select->joinTable(['other_alias' => 'second_field'], 'sec_table', 'stbl.id = tbl.foreign_id', \BoltDb\Engine\Query\Block\Join\JoinBlock::TYPE_LEFT, 'stbl', 'my_schema');



Zrób fluent

Bolt:(IMG:style_emoticons/default/ohmy.gif) f($pdo)
->select(Fields:(IMG:style_emoticons/default/ohmy.gif) f())
->from(...)
->joinLeft("")->on("")
->get();

To tylko przykład , ale "you get idea"


  1. $result = $connection->getConnection()->query($select->toString());



Jako uatrakcyjnienie swojej biblioteki mógłbyś zwracać reactive object albo monadę/optional'a.

  1. $result = $select->getResult()
  2.  
  3. $result->cached()
  4.  
  5. ->onSucces(function($rows){
  6.  
  7. })
  8.  
  9. ->onError(function(){
  10. echo "Błąd";
  11. })
  12.  
  13. $resutl->getOrThrowException(new Exception())
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 13.10.2025 - 22:06