Scratchbook

Das Leben ist immer anders als die Realität.

PHP Framework?

Freidenker, 12. September 2007, 15:05 Uhr

Warning: Use of undefined constant ri_rand_compare - assumed 'ri_rand_compare' (this will throw an Error in a future version of PHP) in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/random-image-widget/random_image.php on line 129 Warning: Use of undefined constant ri_rand_compare - assumed 'ri_rand_compare' (this will throw an Error in a future version of PHP) in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/random-image-widget/random_image.php on line 130 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384 Warning: preg_match_all(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 700 Warning: Invalid argument supplied for foreach() in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 707 Warning: preg_match_all(): Compilation failed: invalid range in character class at offset 4 in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 700 Warning: Invalid argument supplied for foreach() in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 707

Ein Studi-Kollege von mir hat ne Frage an euch 😉

Ich bin ein PHP Programmierer und auf der Suchen nach dem PHP-Framework schlechthin.

Bis jetzt habe ich auf dieser Website auf eine lange Diskussion gestossen, wobei vor allem 3 Frameworks (zend, CodeIgniter, Prado) empfohlen (unten in den Diskussionen).

Da ich mich selber gar nicht auskenne und noch keine Erfahrungen mit Frameworks habe, möchte ich gerne diese Frage in die Runde werfen.

Welches Framework eignet sich für:

– PHP
– gutes Manual
– wenn möglich ajax
– saubere CSS-Trennung
– OpenSource 😉

Vielen Dank für Eure Meinungen und Erfahrungen!

Stefan.

rakudave

CodeIgniter

Longneck

ganz klar codeigniter. me chönt fascht sage: das isch php on rails…

es isch lightweight, fokkussiert uf performance und „me muess es nid benutze“ – sprich: es git eim e struktur vor (MVC), me cha aber au normal php drin programmiere wemme wott. usserdäm machts webapps sicher, indems viel scho macht, wo sich programmierer amigs gar nid so drum kümmere.

vorallem laufts uf php4 und bruucht kei root / console-zuegriff.

hamer es buech kauft zu codeigniter und wird – wenn i zyt ha – als üebig mindpad komplett neu mit codeigniter erstelle.

und d dokumentation isch eifach de hammer!
ajax chasch dr jo mit scriptaculous inehole.

i bi sit dass i codeigniter entdeckt ha immer wiedr mol go luege, öps ächt e framework git, wo besser isch – nö. codeigniter schloht alles!
was vielicht als „nochteil“ aagluegt chönt wärde: durch das es so minimalistisch ghalte isch (und drum au so schnell isch), hets vielicht nid so viel funktione wie anderi frameworks. i find es het aber genau die funktione wome bruucht.

foxie

jo, i kenns nid, han bis jetzt immer ganz alles sälbr gmacht…abr wäge de funktione: es isch nid unbedingt schöner wenn de meh funktione hesch, immerhin musch das züüg au no chönne bediene…abr das muss jede mit sich sälber ussmache…as for me, i hass programm mit vill funktione wells eifach sehr schnäll unübrsichtlich wird…

Longneck

das findi ebbe au, dorum isch mir codeigniter jo au so symphatisch! es git dr e schiene vor, überlohts aber dir, öb de mit em zug willsch fahre und d werkzüüg benutze willsch.
hübsch unufdringlich! so bringsch e struktur in di code, hesch aber gliich alli freiheite vo php.

Stefan

Danke vill mal für die schnelle comments! De Elmar het scho xeit, dass de Longneck sich vill mit codeigniter beschäftigt hät. So wies etz usxeht wird ich ganz sicher mal demit afange!

grad na en tip zum starte?

foxie

guet, zum strucktur in code inbecho musch am aafang eifach moll übrlege, was s gschiidschte isch…goht scho
isch komisch, programmiere ghört zu de einzige sache, woni organisiert chan mache ohni dass i mi drmit abkämpf wie sau

rakudave

[quote comment=“53207″]grad na en tip zum starte?[/quote]
uf dr homepage vo codeigniter giz videotutorials, zieh dr die moll iine
http://codeigniter.com/tutorials/

Longneck

mit em buech und de userdoku bisch bestens grüschtet!

Stefan

Alles klar!

han scho ali videotutorials gluegt und di halb doku gläse 😉
xeht scho hammer us.

Öpper het xeit das seg ähnlich wie ruby on rails… wür sichs lohne grad uf ruby umstige, statt codeigniter lerne?

Longneck

s problem isch eifach: es git nid sehr viel ruby-hoster.

und codeigniter lauft mit php4, e riesevorteil, da das sehr verbreitet isch.

Stefan

Alles klar.

Danke!

nurso

REDET DEUTSCH GVD >_

foxie

wie wärs mit e bitz meh höflichkeit??

foxie

usserdäm isch das dütsch. SCHWIZER dütsch 😀

Wi!!iam Wa!!ace

all daag goht irgendnoime uf dere wält en dialäkt verlore…

DESHALB REDEN WIR SO WIE UNS DER SCHNABEL GEWACHSEN IST!!

Longneck

oh ja, sprooch isch es kulturguet. und dorum rede mir au SCHWYZERDÜTSCH, damit uns die wundervolli kultur nid verloore goht!

läck die schwoobä hän ihre schnaabel aber schön wit offe!^^
(ja gell, das hast du jetzt hoffentlich nicht verstanden 🙂 )

Stefan

hehe. das iosch etz grad e hammer abschweifig vom thema xi.
drum mäld ich mich wider mal zum Thema CodeIgniter 🙂

Ich han mich mittlerwiile mal zimli is thema iägläse, und stahn jetzt devor chli en schlaue ufbau für mini ersct teschtsiite z\’mache…

Grundsätzlich wett ich mehreri controller ha. jede kümmeret sich um ein teil vode Page. (aso zum bistpil en nav_controller wo mir e schöne navigation organisiert…)
Ich nimm ah, dass als oberschti instanz en Main_Controller die andere controller coordiniert (bzw halt controlliert:P).

Xehn ich das richtig? und wenn ja, wie chan ich im Main_controller suuber anderi controller instanziere? han scho sicher 2h googlet aber nüt schlaus gfunde 🙁

Grüess us Zürii (bzw Wintii)

Longneck

i würd e library mache, wo de immer widr druf chasch zrugggriffe. e helper oder es plugin wär wenns applikationsunabhängig wär…

Stefan

ok…

chönntsch mer chli code schicke uf mini mail, damit ich das chönnt nahvollzie? aso es exemple für e library und wie die nachher im controller hollsch.

😀

Longneck

also zerscht mol paar definitione:

library: class wo spezifische code enthaltet um funktionalität vo de site z erwitere.

helper: sammlig vo funktione (isch nid OO)

plugin: wiene helper, eifach nur ei funktion; dänkt fürs verteile und witergäh in dr community.

so, und jetzt zur bedienig:

e library het kei basisklass, muesch also nüt go „extende“.
——
libraries/Display.php:

class Display()
{
function mainpage()
{
code…
}
}

lade mit $this->load->library(‚display‘);
benutze: $this->display->mainpage();

(1:1 usem codeigniter buech – cha drs wirklich empfähle)

foxie

was sich bi mir glohnt het: i han dr code so uffteilt, dass 1. nur funktione/classe für bestimmti sache in ein file gsi sind…so findsch das züüg au widr…isch eigentlich logisch, abr i bi jetzt gliich froh, dass is so gmacht han, und i han drei ordner im hauptverzeichnis aagleit: /dat, /lib und glaub /uploads und denn s entsprächende züüg in die ordner do…jenachdem bruuchts halt no meh…das muss jede sälber wüsse…

Stefan

okay, das xehni und wär au machbar…

aber ich fräg mich. wo sind denn d\\\’vorteil wo MVC mit sich bringt? und was hebt codeigniter vo anderne Frameworks ab? ich mein, dateie irgendwie include chamer immer ufe art.

foxie

aso, i bi kei pro programmiererin…übrhaupt nid, abr i han als maturarbet en eiges forum programmiert. vo grund uff, und dört hanich bald moll gmerkt, dass es e simpli struckturierig, wie mer das au immer nennt, sehr vill offe loht…mer chan spöter erwittere und vrändere, ohni dass s ganze ding an arsch goht…du hesch also denn mehr odr weniger vill loosi teili irgendwie anenander ghängt…wo den als eis ganzes präsentiert wärde

Longneck

wenn logik und design trennt sin, chönne grafiker und programmierer getrennt schaffe, als bispiel. öb de es model benutzisch für datebank isch freiwillig, chasch jo au in de controller go datebank abfrooge.

was aber isch: durch dass die drei sache ufteilt sin, hesch nüm sone spaghetticode-gewurstel.

e witere vorteil: wenn de z.B. e site für WAP erstelle wöttsch, muesch numme no e neui view erstelle – d logik isch jo scho do! oder e RSS-feed – neui view erstelle, passt. d date wärde eifach anderst aagordnet.

Stefan

okay.

Das heisst, du hesch i dinere ganze website am schluss EIN controller, E PAAR views für de controller, und ev na es model. de rescht machsch mit libraries?

ich han ebe sowas im chopf gha: (isch das scheisse?)

class Main_Controller{

var $data;

function __construct(){

$this->load->controller(’nav_controller’);
$this->nav_controller->load->view(\’nav_view\‘,TRUE);
$this->data[\’navigation\‘] = $this->load->controller(’footer_controller’);
$this->data[\’footer\‘] = $this->’footer_controller->load->view(\’’footer_view\‘,TRUE);

}
function index(){

$this->load->view(\’main_view\‘,$data);
}
}

so hani s\’MVC ufteilt für verschideni parts vo minere site… chamer das so mache, oder chunnts schlächt use?

Longneck

mmh, ei controller wird chli schwierig. luege mer doch mol d url a:

http://www.yoursite.com/controller/function/param1/param2/...

I würd d site in controller ufteile, z.b. für jedi untersite ei controller.
jede controller cha usserdäm genau ei view laade. aber in dr view selber chasch denn widr anderi views lade, also z.B. navigation.

und äähm- controller muesch gar nid laade – die wärde jo automatisch durch d url ufgrüeft. lueg dr susch nomol d videos uf dr codeigniter site a.

foxie

jaa, dasch sicherlich e gueti idee…ich han das nid gmacht, und han drwäge e riiise datei…das chasch sehr schlächt übrblicke, bzw vrändere

Stefan

ah ja logo. controller werded mit de url glade.

aber etz weissi, wie mer chan mehreri views mache. eifach anderi views i de haupt_view lade… eifach mit $this->load->view(\’name\‘); oder?

bi dim bsp obe isch en param öppis wie /name=sowiso/vorname=lalala/ oder was?

langsam xehni d\’möglichkeite und strukture… etz fangi den mal ah pröble… s\’buech chani mer grad nid leischte. han ebe ersch grad g\’hürate und züglet. isch choge choschtspilig :$

Tanke vorerst mal.
Stefan

Stefan

So…

Ich han etz das Buech kauft und mus säge, isch aso sehr guet! spannend gschribe und mit guetem code!

Merci für de tipp.

Longneck

gäll! findi ebbe au. e wunderbari ergänzig zur doku…

Stefan

So…

Ich han etz mal di erscht page realisiert. Si isch unter http://www.baurs.ch/wwd ersichtlich. Isch ned schlächt usecho… ich han e main_view gmacht, wo denn di andere Views tuet lade, und en Controller ladet immer d’main_view und git miteme parameter mit, weli subview d’main_view söll lade. das isch etz mal nid schlcht gloffe, aber ganz de durchblick wie das mer das MVC konzept suber strukuriert umsetzt…

messi für euchi tipps.
Stefan.

Longneck

isch geil!

aha, chli überwachig: div id=“debug“>

Array
(
    [session_id] => 2e87dd9e811b030215488d24b6473c77
    [ip_address] => 83.76.106.227
    [user_agent] => Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) Ap
    [last_activity] => 1198355793
    [last_visit] => 0

😛

aber cool! jetzt muesch nur no e mod_rewrite rule erstelle, zum s index.php wägbecho…

Stefan

hehe. das div debug isch zum entwickle xi. isch na guet wennt immer grad xehsch was ide session so isch…. hans den eifach mit CSS abgstellt…

index.php hani ebe nie weg becho. hans öppe mit 3 verschidene htaccess’s probiert 🙁

hesch eis wo funktioniert?

Longneck

ha au lang miesse suche, bis i mol e funktionierends htaccess gfunde ha. aber do sin zwei variante:

Erste Variante
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]

Zweite Variante
RewriteEngine On
RewriteBase /myapp/ < Relativ zur Haupturl RewriteCond $1 !^(index\.php|images|robots\.txt) RewriteRule ^(.*)$ index.php/$1 [L] http://www.mindpad.ch/page/413.html

Die ersti luegt, öb das File physikalisch vorhande isch. Wenn nid, übergits alles an index.php
Die zweit Variabte übergit alles an index.php, usser die usnahme (findi sicherer, so chasch verzeichnis wo niemer direkt söll zuegriff ha verschwinde loh).

Warning: count(): Parameter must be an array or an object that implements Countable in /home/httpd/vhosts/scratchbook.ch/httpdocs/wp-content/themes/scratchbook/navigation_bar_bottom.php on line 1