Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

40 Stron V  « < 13 14 15 16 17 > »   
Closed TopicStart new topic
> Wybór Frameworka.
dr4ko
post
Post #281





Grupa: Zarejestrowani
Postów: 49
Pomógł: 4
Dołączył: 16.07.2008
Skąd: Gdańsk

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


Również bym optował za Symfony. Jak się zna symfony to prosty serwis/aplikację można zrobić w tydzień ale w 3 tygodnie nie nauczysz się żadnego frameworka nie mówiąc już o przepisaniu serwisu.
Go to the top of the page
+Quote Post
wiewiorek
post
Post #282





Grupa: Zarejestrowani
Postów: 247
Pomógł: 11
Dołączył: 5.09.2009

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


W Zendzie mamy:
- beznadziejną dokumentację, brak porządnego tutoriala przez co przez kilka dni mordowałem, pytałem i szukałem jak włączyć layout bo nigdzie nie napisali

- by zrobić 1 model trzeba wg ich mini tutoriala: http://framework.zend.com/docs/quickstart/...-database-table zrobić tak:
  1. class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
  2. {
  3. protected function _initAutoload()
  4. {
  5. $autoloader = new Zend_Application_Module_Autoloader(array(
  6. 'namespace' => 'Default',
  7. 'basePath' => dirname(__FILE__),
  8. ));
  9. return $autoloader;
  10. }
  11.  
  12. protected function _initDoctype()
  13. {
  14. $this->bootstrap('view');
  15. $view = $this->getResource('view');
  16. $view->doctype('XHTML1_STRICT');
  17. }
  18. }
  19.  
  20. //----------------------------------
  21.  
  22. ; application/configs/application.ini
  23.  
  24. ; Add these lines to the appropriate sections:
  25. [production]
  26. resources.db.adapter = "PDO_SQLITE"
  27. resources.db.params.dbname = APPLICATION_PATH "/../data/db/guestbook.db"
  28.  
  29. [testing : production]
  30. resources.db.params.dbname = APPLICATION_PATH "/../data/db/guestbook-testing.db"
  31.  
  32. [development : production]
  33. resources.db.params.dbname = APPLICATION_PATH "/../data/db/guestbook-dev.db"
  34.  
  35. //-----------------------------------
  36.  
  37. //stworzyc katalog
  38.  
  39. //-----------------------------------
  40.  
  41. <?php
  42. // scripts/load.sqlite.php
  43.  
  44. /**
  45.  * Script for creating and loading database
  46.  */
  47.  
  48. // Initialize the application path and autoloading
  49. defined('APPLICATION_PATH')
  50. || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
  51. set_include_path(implode(PATH_SEPARATOR, array(
  52. APPLICATION_PATH . '/../library',
  53. )));
  54. require_once 'Zend/Loader/Autoloader.php';
  55. Zend_Loader_Autoloader::getInstance();
  56.  
  57. // Define some CLI options
  58. $getopt = new Zend_Console_Getopt(array(
  59. 'withdata|w' => 'Load database with sample data',
  60. 'env|e-s' => 'Application environment for which to create database (defaults to development)',
  61. 'help|h' => 'Help -- usage message',
  62. ));
  63. try {
  64. $getopt->parse();
  65. } catch (Zend_Console_Getopt_Exception $e) {
  66. // Bad options passed: report usage
  67. echo $e->getUsageMessage();
  68. return false;
  69. }
  70.  
  71. // If help requested, report usage message
  72. if ($getopt->getOption('h')) {
  73. echo $getopt->getUsageMessage();
  74. return true;
  75. }
  76.  
  77. // Initialize values based on presence or absence of CLI options
  78. $withData = $getopt->getOption('w');
  79. $env = $getopt->getOption('e');
  80. defined('APPLICATION_ENV')
  81. || define('APPLICATION_ENV', (null === $env) ? 'development' : $env);
  82.  
  83. // Initialize Zend_Application
  84. $application = new Zend_Application(
  85. APPLICATION_ENV,
  86. APPLICATION_PATH . '/configs/application.ini'
  87. );
  88.  
  89. // Initialize and retrieve DB resource
  90. $bootstrap = $application->getBootstrap();
  91. $bootstrap->bootstrap('db');
  92. $dbAdapter = $bootstrap->getResource('db');
  93.  
  94. // let the user know whats going on (we are actually creating a
  95. // database here)
  96. if ('testing' != APPLICATION_ENV) {
  97. echo 'Writing Database Guestbook in (control-c to cancel): ' . PHP_EOL;
  98. for ($x = 5; $x > 0; $x--) {
  99. echo $x . "\r"; sleep(1);
  100. }
  101. }
  102.  
  103. // Check to see if we have a database file already
  104. $options = $bootstrap->getOption('resources');
  105. $dbFile = $options['db']['params']['dbname'];
  106. if (file_exists($dbFile)) {
  107. unlink($dbFile);
  108. }
  109.  
  110. // this block executes the actual statements that were loaded from
  111. // the schema file.
  112. try {
  113. $schemaSql = file_get_contents(dirname(__FILE__) . '/schema.sqlite.sql');
  114. // use the connection directly to load sql in batches
  115. $dbAdapter->getConnection()->exec($schemaSql);
  116. chmod($dbFile, 0666);
  117.  
  118. if ('testing' != APPLICATION_ENV) {
  119. echo PHP_EOL;
  120. echo 'Database Created';
  121. echo PHP_EOL;
  122. }
  123.  
  124. if ($withData) {
  125. $dataSql = file_get_contents(dirname(__FILE__) . '/data.sqlite.sql');
  126. // use the connection directly to load sql in batches
  127. $dbAdapter->getConnection()->exec($dataSql);
  128. if ('testing' != APPLICATION_ENV) {
  129. echo 'Data Loaded.';
  130. echo PHP_EOL;
  131. }
  132. }
  133.  
  134. } catch (Exception $e) {
  135. echo 'AN ERROR HAS OCCURED:' . PHP_EOL;
  136. echo $e->getMessage() . PHP_EOL;
  137. return false;
  138. }
  139.  
  140. // generally speaking, this script will be run from the command line
  141. return true;
  142.  
  143.  
  144. //--------------------------------------
  145.  
  146. //znowu stworzyc katalog
  147.  
  148. //------------------------------------
  149.  
  150. class Default_Model_GuestbookMapper
  151. {
  152. protected $_dbTable;
  153.  
  154. public function setDbTable($dbTable)
  155. {
  156. if (is_string($dbTable)) {
  157. $dbTable = new $dbTable();
  158. }
  159. if (!$dbTable instanceof Zend_Db_Table_Abstract) {
  160. throw new Exception('Invalid table data gateway provided');
  161. }
  162. $this->_dbTable = $dbTable;
  163. return $this;
  164. }
  165.  
  166. public function getDbTable()
  167. {
  168. if (null === $this->_dbTable) {
  169. $this->setDbTable('Default_Model_DbTable_Guestbook');
  170. }
  171. return $this->_dbTable;
  172. }
  173.  
  174. public function save(Default_Model_Guestbook $guestbook)
  175. {
  176. $data = array(
  177. 'email' => $guestbook->getEmail(),
  178. 'comment' => $guestbook->getComment(),
  179. 'created' => date('Y-m-d H:i:s'),
  180. );
  181.  
  182. if (null === ($id = $guestbook->getId())) {
  183. unset($data['id']);
  184. $this->getDbTable()->insert($data);
  185. } else {
  186. $this->getDbTable()->update($data, array('id = ?' => $id));
  187. }
  188. }
  189.  
  190. public function find($id, Default_Model_Guestbook $guestbook)
  191. {
  192. $result = $this->getDbTable()->find($id);
  193. if (0 == count($result)) {
  194. return;
  195. }
  196. $row = $result->current();
  197. $guestbook->setId($row->id)
  198. ->setEmail($row->email)
  199. ->setComment($row->comment)
  200. ->setCreated($row->created);
  201. }
  202.  
  203. public function fetchAll()
  204. {
  205. $resultSet = $this->getDbTable()->fetchAll();
  206. $entries = array();
  207. foreach ($resultSet as $row) {
  208. $entry = new Default_Model_Guestbook();
  209. $entry->setId($row->id)
  210. ->setEmail($row->email)
  211. ->setComment($row->comment)
  212. ->setCreated($row->created)
  213. ->setMapper($this);
  214. $entries[] = $entry;
  215. }
  216. return $entries;
  217. }
  218. }
  219.  
  220. //---------------------------------------
  221.  
  222. //itd. !! to nie koniec !! kodu jest znacznie wiecej !!
  223.  


Tyle roboty dla jednego modelu (IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/exclamation.gif) Nie wiem jak Wy, ale ja i tak większości z tego nie rozumiem co tu się dzieje, w Symfony nie było tyle roboty.
A to nie jedyne wady ZF, ale z powodu tego jednego modelu już wyczerpałem limit znaków przeznaczony na jednego posta i więcej wad wymienić nie mogę (IMG:style_emoticons/default/tongue.gif)

Ten post edytował wiewiorek 8.10.2009, 17:15:02
Go to the top of the page
+Quote Post
batman
post
Post #283





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




~wiewiorek bzdury wypisujesz.
Cytat
- beznadziejną dokumentację, brak porządnego tutoriala przez co przez kilka dni mordowałem, pytałem i szukałem jak włączyć layout bo nigdzie nie napisali
Fakt. Dokumentacja nie należy do najlepszych. Jeśli szukasz czegoś więcej musisz mocno pogrzebać, by to znaleźć. Ale z tym layoutem to przesadziłeś. Przecież od tego masz Quick start (mini tutorial, jak to określiłeś).

A ten kod, który wkleiłeś to:
- index.php - punkt wejścia do aplikacji.
- bootstrap - klasa odpowiadająca za aplikację
- application.ini - plik konfiguracyjny
- skrypt pomocniczy, który stworzy bazę danych i uzupełni ją danymi
- właściwy model.
A ten tekst, że kodu jest znacznie więcej, to zapomniałeś o kontrolerze, widoku i dwóch pozostałych klasach modelu.

To co napisałeś to kod wymagany do stworzenia projektu, a nie samego modelu. To, że model został omówiony jako ostatni, nie oznacza, że musisz wykonać wszystkie kroki w celu jego napisania.

Pokaż mi frameworka, w którym działa model bez konfiguracji czy czegoś tak zbędnego jak index.php. Jedyne o co proszę, to rzeczowe argumenty.
Go to the top of the page
+Quote Post
wiewiorek
post
Post #284





Grupa: Zarejestrowani
Postów: 247
Pomógł: 11
Dołączył: 5.09.2009

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


Źle napisałem, miałem poprawić, ale zapomniałem - chodziło mi o uprawnienia - Zend_Acl, przez kilka dni szukałem co i w jakim pliku dodać żeby dostęp do danej strony miała osoba tylko o wysokich uprawnieniach, w symfony wystarczyłoby zrobić:
  1. is_secure: on
  2. credentials: [wysokie]


i tyle, w końcu się poddałem i odpuściłem sobie Zenda. W Zendzie nieustannie trzeba dodawać kod, którego często nie rozumiem do plików: index.php, Bootstrap.php i application.ini - to mnie najbardziej wkurza. W Symfony nic takiego nie musiałem robić, a w Zendzie - non stop, przy każdej nowej funkcjonalnosci coś w nich trzeba dodać - to coś włączyć, to do czegoś ustawić ścieżkę itd. itp. - i żeby chociaż w jednym pliku albo żeby konkretnie napisali co i w którym pliku, a to nie, nic nie napiszą.


Przy użyciu konsoli w porównaniu do Symfony też wiele zrobić się nie da. Mogli chociaż zrobić, że jak chce skorzystać, np. z Zend_Acl to wydaję w konsoli polecenie i dodaje mi do tych 3. plików co tam trzeba, ale niestety takiego rozwiązania brak.
Go to the top of the page
+Quote Post
phpion
post
Post #285





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




@wiewiorek:
Nie możesz negować ZF tylko dlatego, że nie dawałeś sobie z nim rady. Przez kilka dni szukałeś jak ugryźć ACL? No bez jaj - przecież w dokumentacji jest to ładnie napisane... Porównujesz ACL do ustawiania uprawnień w Symfony poprzez YML - pamiętaj tylko, że jest to pewien sposób zapisu konfiga. Dokładnie ten sam efekt mógłbyś uzyskać w ZF.

PS: dla jasności - nie używam ZF ani Symfony.
Go to the top of the page
+Quote Post
wiewiorek
post
Post #286





Grupa: Zarejestrowani
Postów: 247
Pomógł: 11
Dołączył: 5.09.2009

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


phpion w dokumentacji a i owszem jest opisane użycie Zend_Acl - UŻYCIE, nie ma natomiast co i do jakiego pliku dodać żeby Zend_Acl uaktywnić.
Go to the top of the page
+Quote Post
-=Peter=-
post
Post #287





Grupa: Zarejestrowani
Postów: 304
Pomógł: 51
Dołączył: 4.02.2005
Skąd: Kraków

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


@wiewiorek - tak ZF ma słabą dokumentację... Brak słów. Dokumentacja ZF wg mnie jest bardzo dobra, znacznie lepsza i obszerniejsza niż symfony (jeśli już porównujesz). Chociaż, poprzez tą obszerność, niekiedy wyszukanie prostej informacji zajmuje sporo czasu.

Zend jako tako nie oferuje nam gotowych klas modelu, jednak oferuje klasy na których bazie możesz sobie model napisać. Możesz również wykorzystać jakiegoś ORMa (Propel, Doctrine) tak jak to jest w symfony.

Cytat
W Zendzie nieustannie trzeba dodawać kod, którego często nie rozumiem do plików: index.php, Bootstrap.php i application.ini - to mnie najbardziej wkurza

To fajnie, że wkurzają cie rzeczy których nie rozumiesz. Pewnie chodzi ci o to, że aby dodać np. połączenie z bazą danych (czy jakiś inny "zasób" wg nazewnictwa zf) trzeba zainicjować w bootstrapie adapter bazy danych oraz ustawić dane do bazy w pliku konfiguracyjnym (co nie jest konieczne, bo możesz na sztywno w bootstrapie to trzymać (IMG:style_emoticons/default/tongue.gif) ). No faktycznie, jest to nieziemsko skomplikowane i nielogiczne... Ciężko się w tym połapać, zwłaszcza że ZF ma tak marną dokumentację.
Go to the top of the page
+Quote Post
batman
post
Post #288





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Cytat(wiewiorek @ 8.10.2009, 22:07:57 ) *
phpion w dokumentacji a i owszem jest opisane użycie Zend_Acl - UŻYCIE, nie ma natomiast co i do jakiego pliku dodać żeby Zend_Acl uaktywnić.

Ehh. Kiedyś oprócz umiejętności czytania, w cenie była umiejętność myślenia.

Jak już nie raz zostało to napisane, ZF jest zbiorem klas, z których możesz sobie napisać frameworka. Dokumentacja opisuje tylko poszczególne komponenty, a to jak je ze sobą połączysz, zależy tylko od Ciebie. Oczywiście są standardy tworzenia projektów w oparciu o ZF, ale nic nie stoi na przeszkodzie, by wyjąć np Zend_Form i użyć go z aplikacji niezależnej od ZF.

Jeśli wymagasz od frameworka dokładnych wytycznych co i jak masz napisać, a dokumentacja ma być zestawem gotowych przepisów na blog/forum/sklep/itd, to ZF nie jest dla Ciebie.
Go to the top of the page
+Quote Post
athabus
post
Post #289





Grupa: Zarejestrowani
Postów: 898
Pomógł: 48
Dołączył: 2.11.2005
Skąd: Poznań

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


Z Zendem jest niestety ten problem, że reklamują go jako frameworka. Ktoś kto chce zacząć przygodę z frameworkami zazwyczaj wybierze właśnie Zenda bo w końcu tworzą go ludzie od php... i niestety w większości przypadków się rozczaruje.
Ja niestety zrobiłem kiedyś ten błąd. Aplikację jaką napisałem w oparciu można nazwać koszmarkiem ;-) - najlepsze jest to, że wtedy nawet nie wiedziałem, że to koszmarek i byłem z siebie bardzo dumny. Teraz gdy już mam pojęcia jak funkcjonują frameworki zrobiłbym to znacznie lepiej.

Co do dokumentacji to się nie wypowiadam, bo ja bawiłem się na etapie 0.7 więc trudno było oczekiwać dobrej dokumentacji - wtedy były opisane poszczególne klasy - nikt nie wspominał o tym jak używać ich jako całości. Jeśli jest tak nadal, to współczuję, bo nie jest to doby układ dla początkującego. Zdecydowanie dobre podejście do dokumentacji ma Symfony - tj. książka wchodząca w szczegóły każdego modułu + tutorial dla początkujących robiący taki przekrój przez wszystkie etapy tworzenia aplikacji. Dzięki temu osoba ma możliwość zapoznania się z istotą frameworka i później wie czego szukać w manualu.

Także rozumiem frustracje Wiewióra bo pare lat temu przeżywałem to samo - no może nie na taką skalę. Poruszałem się trochę jak dziecko we mgle. Dokumentacja techniczna bez "narracji" jak to wszystko połączyć jest bardzo denerwująca.

Trzeba zrozumieć podstawową rzecz - Zend to nie narzędzie dla osób nie znających frameworków. Zaczynając od tego frameworka można sobie wyrządzić dużo krzywdy nie zdając sobie nawet z tego sprawy, że robimy coś źle/nieoptymalnie. Nie zmienia to jednak faktu, że Zend to kawałem przyzwoitego kodu. Sam z niego korzystam, ale tylko jako biblioteki do Symfony.
Go to the top of the page
+Quote Post
wiewiorek
post
Post #290





Grupa: Zarejestrowani
Postów: 247
Pomógł: 11
Dołączył: 5.09.2009

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


Peter, ja robiłem plugina Zend_Acl,
w pliku bootstrap dawałem:
  1. public function _initAclPlugin()
  2. {
  3. $acl = new My_Acl();
  4.  
  5. $fc->registerPlugin(new My_Plugin_Acl($acl));
  6. }
  7.  


w applicatio.ini:
  1. autoloadernamespaces.0 = "Zend_"
  2. autoloadernamespaces.1 = "My_"


w index.php:
  1. set_include_path(implode(PATH_SEPARATOR, array(
  2. realpath(APPLICATION_PATH . '/../library'),
  3. realpath(APPLICATION_PATH . '/plugins'),
  4. )));


i inne cuda i wciąż ten Zend_Acl mi nie działał.

No jak Wy lubicie zabawy z modułami i tyle kombinacji by włączyć coś tak podstawowego jak moduł odpowiedzialny za przywileje, zamiast korzystać z pełnowartościowych frameworków i skupić się na programowaniu to wasza sprawa. Dla mnie nowoczesnymi frameworkami są Symfony i pochodzący z innej bajki ASP.NET - można skupić się na programowaniu, wszystko inne można dodać albo z konsoli, albo z Visual Studio.

Albo kolejna wada - ten framework nie ułatwa podstawowych rzeczy. Przykład - logowanie - w Zendzie to byłoby coś w tym stylu:
  1. $uzytkownicy = new Model_DbTable_Uzytkownicy();
  2. $form = new Form_Logowanie();
  3. $this->view->form = $form;
  4.  
  5. if($this->getRequest()->isPost())
  6. {
  7. if($form->isValid($_POST))
  8. {
  9. $data = $form->getValues();
  10.  
  11. $auth = Zend_Auth::getInstance();
  12. $authAdapter = new Zend_Auth_Adapter_DbTable($uzytkownicy->getAdapter(),'uzytkownicy', 'login', 'haslo');
  13.  
  14. $authAdapter->setIdentity($data['login'])
  15. ->setCredential($data['haslo']);
  16.  
  17. $result = $auth->authenticate($authAdapter);
  18. if($result->isValid())
  19. {
  20. $storage = $auth->getStorage();
  21. $storage->write($authAdapter->getResultRowObject());
  22. $storage->write($authAdapter->getResultRowObject(null, 'password'));
  23.  
  24. $this->_redirect('/');
  25. }
  26. {
  27. $this->view->errorMessage = "Błędny login lub hasło, proszę spróbować ponownie.";
  28. }
  29. }
  30. }


Logowanie - podstawowa sprawa, które powinna wymagać ode mnie minimum kodu.
A tymczasem gdzie jest w tym odwalenie za mnie roboty ? Przecież ja sam musiałem ten kod napisać, a framework ma podobno przyspieszać pracę ? A dodatkowo do tego formularz logowania też trzeba samemu stworzyć - to ma być przyspieszenie pracy ? Przecież gdybym nie skorzystał z Zend Frameworka miałbym niewiele więcej pracy - musiałbym zrobić to samo co w Zendzie + napisanie prostej klasy.

Oczywiście w przypadku innych rzeczy takie podejście jak w Zendzie byłoby ok, ale tu przecież mowa o czymś tak podstawowym jak logowanie - to powinno wymagać minimum pisania kodu, a tymczasem tak nie jest.

Koniec z dyskusji z mojej strony, chcecie to zostańcie przy Zendzie, ja jednak wolę używać rzeczy, które przyspieszają tworzenie stron.

Ten post edytował wiewiorek 9.10.2009, 09:17:55
Go to the top of the page
+Quote Post
-=Peter=-
post
Post #291





Grupa: Zarejestrowani
Postów: 304
Pomógł: 51
Dołączył: 4.02.2005
Skąd: Kraków

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


Nie jestem żadnym zwolennikiem ZF, osobiście wolę pisać w symfony, ale znam w pewnym stopniu obydwa frameworki.

A powiedz mi czy symfony samo z siebie automatyzuje autoryzację? Nie, trzeba samemu napisać formularz, samemu napisać odpowiedni walidator. No chyba że są jakieś nieoficjalne pluginy do tego, ale takie coś i do ZF by się znalazło. ZF oferuje nam za to narzędzie do autoryzacji, które możemy wykorzystać do autoryzacji http, czy zwykłego logowania na sesji.

Jeśli chodzi o te śmieszny przykład z Acl którego nie rozumiesz (tak pisałeś w poprzednich postach), to cie oświecę:

Cytat
  1. set_include_path(implode(PATH_SEPARATOR, array(
  2. realpath(APPLICATION_PATH . '/../library'),
  3. realpath(APPLICATION_PATH . '/plugins'),
  4. )));


Ustawienie include path, aby można było w łatwy sposób includować pliki. Nie ma bezpośredniego związku z Acl. To się ustawia w każdym projekcie.

Daje nam to tyle, że aby coś includować (np. '../library/Zend/JakaśKlasa.php') to możemy pominąć część relatywną ścieżki ('../library'), a używać tylko 'Zend/JakaśKlasa.php'.

Cytat
  1. autoloadernamespaces.0 = "Zend_"
  2. autoloadernamespaces.1 = "My_"

Ustawienie przestrzeni nazw dla autoloadera. Nie ma to bezpośredniego związku z Acl. To też się ustawia w każdym projekcie, ja osobiście mam to ustawione w bootstrapie, a nie w plikach konfiguracyjnych.

Cytat
  1. public function _initAclPlugin()
  2. {
  3. $acl = new My_Acl();
  4.  
  5. $fc->registerPlugin(new My_Plugin_Acl($acl));
  6. }

Tylko to odpowiada za rejestrację pluginu. Zaraz zaczniesz narzekać, że aby użyć Acl to trzeba utworzyć plik index.php i odpalić w nim bootstrapa...
Go to the top of the page
+Quote Post
modic
post
Post #292





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 18.07.2008

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


Zdecydowanie na sam początek, do nauki najlepsze jest CI, prostota, świetna dokumentacja i łatwość użytkowania.

Nie wiem jak Wy, ale ja osobiście zalety CI cenię bardziej niż wsparcie dla php5, choć miło by było z estrony developerów jakby sobie o nim przypomnieli.
Niby jeszcze jest Kohana, takie niby ulepszone CI, ale wiele rzeczy jest tam zrobiona zupełnie inaczej i jak dla mnie jest troszkę irytująca, szczególnie to że nawet nie było przykładowych plików konfiguracyjnych, tylko trzeba było w necie szukać, no i to że nie mam takiej swobody jak w CI

Ten post edytował modic 5.11.2009, 19:40:28
Go to the top of the page
+Quote Post
phpion
post
Post #293





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(modic @ 5.11.2009, 21:38:20 ) *
Niby jeszcze jest Kohana, takie niby ulepszone CI, ale wiele rzeczy jest tam zrobiona zupełnie inaczej i jak dla mnie jest troszkę irytująca, szczególnie to że nawet nie było przykładowych plików konfiguracyjnych, tylko trzeba było w necie szukać, no i to że nie mam takiej swobody jak w CI

(IMG:style_emoticons/default/blinksmiley.gif) jakich plików konfiguracyjnych? W katalogu system/config masz wszystkie wyjściowe wersje plików konfiguracyjnych. Wyjściowe, bo Kohana wspiera kaskadowość plików. Nie rozumiem również w jaki sposób Kohana ogranicza Twoją swobodę. Jak dla mnie K jest duży krok przed CI i jak na chwilę obecną nie zanosi się by CI ją przegoniło.
Go to the top of the page
+Quote Post
qba_rox
post
Post #294





Grupa: Zarejestrowani
Postów: 29
Pomógł: 1
Dołączył: 12.01.2009
Skąd: Warszawa

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


Takie dyskusje sa prowadzone przez ludzi, ktorzy nie maja pojecia o biznesie webowym.
Wiewiorkowi powinni zabronic tu pisac, jak mozna negowac framework, tylko dlatego bo nie potrafi sie go zrozumiec. A moze lepiej bylo zostac krawcem? (bez ujmowania krawcowm)
Go to the top of the page
+Quote Post
Zyx
post
Post #295





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

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


Moje główne zastrzeżenie dotyczy frameworków PHP w ogólności, konkretniej - implementacji MVC, która żadnym MVC nie jest. Weźmy pseudokod w stylu pierwszego lepszego frameworka:

  1. public function costamAction()
  2. {
  3.  
  4. $model = Item_Model::create();
  5. $pagination = new Pagination($model->count(), 30);
  6. $data = $model->select('a, b, c)->where('foo = ?', $bar)->order('joe')->limit($pagination);
  7.  
  8. $view = $this->getView('index');
  9. $view->data = $data;
  10. $view->pagination = $data;
  11. $this->contentManager->addView($view);
  12. } // end costamAction();


Teraz pseudokod no-framework:

  1. function costamAction()
  2. {
  3. $pdo = Registry::get('pdo');
  4. $pagination = new Pagination(Count_Data('item'), 30);
  5. $stmt = $pdo->query('SELECT a, b, c FROM item WHERE foo=:bar ORDER BY joe '.$pagination->getLimit());
  6. $stmt->bindValue(':bar', $bar);
  7. $stmt->execute();
  8. $data = array();
  9. while($row = $stmt->fetch(PDO::FETCH_ASSOC))
  10. {
  11. $data[] = $row;
  12. }
  13. $stmt->closeCursor();
  14.  
  15. $template = new Template('index');
  16. $template->data = $data;
  17. $template->pagination = $pagination;
  18. $template->display();
  19. } // end costamAction();


I teraz pytanie stulecia: co takiego jest w pierwszym kodzie, czego nie ma w drugim, że pierwszy nazywamy "zgodnym z MVC", a drugi nie? Bo według mnie nie ma nic, a oba kody poza stopniem wykorzystania obiektówki, elegancją i poziomem opakowania powtarzalnych operacji nie różnią się zasadniczo od kodu, który potrafi napisać przy użyciu mysql_query() i funkcji pierwszy lepszy człowiek po dwóch miesiącach nauki PHP. Do tego dochodzi jeszcze mnóstwo kwiatków związanych z umieszczaniem danego elementu nie tam, gdzie powinien być (np. stronicowanie w kontrolerze).

Jak ktoś się uprze, to doprowadzi kod do postaci, gdy będzie to zgodne z MVC, tylko dlaczego w takim razie nie dostajemy takiej postaci od razu, skoro niby "MVC jest zaimplementowane"?

Go to the top of the page
+Quote Post
LBO
post
Post #296





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


@Zyx, przyjrzyj się Agavi
Go to the top of the page
+Quote Post
MarcinTryka
post
Post #297





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 31.03.2007

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


Cytat(wiewiorek @ 8.10.2009, 19:28:46 ) *
Źle napisałem, miałem poprawić, ale zapomniałem - chodziło mi o uprawnienia - Zend_Acl, przez kilka dni szukałem co i w jakim pliku dodać żeby dostęp do danej strony miała osoba tylko o wysokich uprawnieniach, w symfony wystarczyłoby zrobić:
  1. is_secure: on
  2. credentials: [wysokie]

Ok. A co jeśli jeden użytkownik na wysokim poziomie ma mieć dostęp do swoich stron i do stron ludzi o najniższym poziomie, a inny nie? A jeśli tylko fragermnt danej srony w zależności o d uprawnień ma być wyświetlany?
A jeśli ACL ma zależeć nie od "poziomu" że im wyżej tym więcej może ,a według przydzielonych uprawnień do konkretnych akcji/pól dla konkretnego urzytkownika/grupy?

Cytat(wiewiorek @ 9.10.2009, 09:08:12 ) *
Logowanie - podstawowa sprawa, które powinna wymagać ode mnie minimum kodu.

To robisz sobie moduł logowania z konrolerem, helperem i modelem. I wklejasz jak to takie powtarzalne.
Oczywiście da się zrobić frameworka w którym piszesz:
[logowanie]
I już Ci obsługuje bazę danych, tworzy przekerowania, kontroler, wyświetlanie informacji... coś takiego już zrobiono, nazywa się Joomla. Jak chcesz programowąć to potrzebujesz dostępu do tych małych klocków. Jak masz tylko jeden klocek to jak przychodzi konieczność zmian/zrobienia czegoś nieszablonowego to leżysz i kwiczysz. Tutaj jest takie podejście że ja sobie składam z małych klocków większy kawałek strony, z którego korzystam wielokrotnie, a jak chcę zrobić coś niestandardowego to mam opanowane podstawy i wiem jak co poprzekładać.

Nie srpowadzajmy frameworków do łatwości CMSów typu Joomla, bo to inna działka. PRzecież nie chodzi o to żeby było tak proste żeby nie-programista programował używając frameworka. i jakiegoś tutoriala na 3 strony.

Ten post edytował MarcinTryka 15.11.2009, 18:07:40
Go to the top of the page
+Quote Post
dr4ko
post
Post #298





Grupa: Zarejestrowani
Postów: 49
Pomógł: 4
Dołączył: 16.07.2008
Skąd: Gdańsk

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


Cytat(MarcinTryka @ 15.11.2009, 18:06:12 ) *
Ok. A co jeśli jeden użytkownik na wysokim poziomie ma mieć dostęp do swoich stron i do stron ludzi o najniższym poziomie, a inny nie? A jeśli tylko fragermnt danej srony w zależności o d uprawnień ma być wyświetlany?
A jeśli ACL ma zależeć nie od "poziomu" że im wyżej tym więcej może ,a według przydzielonych uprawnień do konkretnych akcji/pól dla konkretnego urzytkownika/grupy?


Ustawienia w security.yml w Symfony nie służą do określania tego co ma się wyświetlić tylko do określenia czy dany użytkownik w ogóle może wywołać daną akcję. Uprawnienia w yamlu można łączyć operatorami logicznymi i sprawdzać dowolną konfigurację uprawnień ale jeszcze raz zaznaczę że tylko w celu określenia czy daną akcję odpalić. W akcji wystarczy sprawdzić uprawnienia użytkownika wywołując
  1. $this->getUser()->hasCredential('uprawnienie')

i zrobić to co dla danego użytkownika ma się wykonać. Symfony ma naprawdę łatwy i przyjemny system uprawnień tylko trzeba go stosować z głową.
Go to the top of the page
+Quote Post
NuLL
post
Post #299





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


Cytat
Do tego dochodzi jeszcze mnóstwo kwiatków związanych z umieszczaniem danego elementu nie tam, gdzie powinien być (np. stronicowanie w kontrolerze).

@Zyx - A gdzie wg Ciebie według Ciebie to powinno być umieszczone ?

Ten post edytował NuLL 13.12.2009, 18:53:48
Go to the top of the page
+Quote Post
wiewiorek
post
Post #300





Grupa: Zarejestrowani
Postów: 247
Pomógł: 11
Dołączył: 5.09.2009

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


Używał może ktoś ORM Designera dla Symfony i Doctrine/Propel ?
http://www.orm-designer.com/web/screenshots
Pobrałem i zainstalowałem wersję testową, fajna sprawa (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

40 Stron V  « < 13 14 15 16 17 > » 
Closed TopicStart new topic
3 Użytkowników czyta ten temat (3 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 13.12.2025 - 08:00