Best practice: BaseModel

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Jakub Šulák
Člen | 222
+
0
-

Zdravím, chtěl bych se zeptat, jaké máte best practice u základního modelu (model který má na starost být mezivrstvou mezi DB a OOP).

Konkrétně řeším následující problém:

<?php
class BaseModel extends Object
{
  static $dbTable;
  protected $transformationArray;
  protected $dbPK = 'id';

  public function ...
}
?>

A narážím tak na problém, že mám i statické metody (například insert()), které však nevidí vlastnost $dbModel v potomkovi BaseModel (viz problém s Late Static Bindings).

Máte někdo toto vyřešeno nějakým způsobem, případně celý problém modelu („DB modelu“) máte pojatý jinak a tomuto problému se tak vyhýbáte?

Díky za odpověď

PS: Odpověď „přejdi na PHP 5.3“ mi bohužel není nic platná…;-)

Ondřej Mirtes
Člen | 1536
+
0
-

A co zrušit statické metody?

Jakub Šulák
Člen | 222
+
0
-

To je podle mě dosti polovičaté řešení.
V modelu existují metody, pro které je zbytečné, aby objekt procházel celým životním cyklem.

David Grudl
Nette Core | 8228
+
0
-

Jakub Šulák napsal(a):

To je podle mě dosti polovičaté řešení.
V modelu existují metody, pro které je zbytečné, aby objekt procházel celým životním cyklem.

Což ovšem naznačuje špatný návrh třídy… Rozděl ji do dvou tříd.