150 likes | 593 Views
Introduction to. FABRIC. by Fabrizio Parrella. What is Fabric. Just another PHP framework. Built to be light, fast, no overhead. Simple configuration. in fact... none is needed. Why Fabric. Needed: Something I had full control on That could be “Drop and GO”
E N D
Introduction to FABRIC by Fabrizio Parrella
What is Fabric • Just another PHP framework • Built to be light, fast, no overhead • Simple configuration... in fact... none is needed
Why Fabric • Needed: • Something I had full control on • That could be “Drop and GO” • To “normalize” PHP settings • Wanted: • Something fully OO • Flexible, able to support other packages • phpMailer, smarty, etc..
What does Fabric Do for You ? • Well... nothing really :-) • It helps you to write code faster • I know you hear that before • Core separated from your Code • Heard this too • Gives you a few helpers classes • Integrates with your previous classes/projects fairly easy • Light, Light... Light... did I mention.. light ? • Just a couple files are really needed
What Do You Need /web - configurable main folder/web/bin - core classes created by the developer/web/etc - configuration files (and possible other needed files) /web/etc/hooks - location for the files used with the hook class/web/etc/lang - location for the files used by the lang class/web/etc/periodic - cron files/web/include - _functions.php – loading class function/web/lib - helper classes needed by /bin/web/logs - location that can be used to store logs/web/sbin - system binary, stand alone classes/web/slib - system libraries, those files needs /bin to work/web/tmp - location that can be used to store temporary files/web/tpl - template folder/web/usr - location that can be used for user uploaded files/cron.php - cron file, simply cron it to run once every minute/index.php - generic configuration/.htaccess - a few redirects
Helpers • table_prototype • uri parsing and creator • cron • exceptions • config • email • cookies/sessions/cache • etc....
What do you need to know • lc() and ll() • /[s]bin and /[s]lib • /bin/path/class.php = lc('path_class') • /lib/path/class.php = ll('path_class') • /[bin|lib]/path/class.php == class path_class(){}; • {ll('class')->function();}==={$class = ll('class'); $class->function();} • ll('class')->function1()->function2()->.... ll() and lc() might be consolidated into one function as well as sbin and slib. A function will be created for sbin/slib and one for bin/lib
What happens when hitting a page • .htaccess (not necessary, but it makes it prettier) • Index.php • setting up constants and other vars • include the functions file [ lc() and ll() ] • include fabric • autoload classes (URI always loaded. The rest is configurable, default: none ) • load called CLASS/TASK, or fail over if not found (usually an error page or “did you mean system”. configurable) • load 'display' and outputs the page (if any)
What does the Code Look Like 1 Sample Code: www.mysite.com/home.html The extension (.html) is optional and configurable /fabric/bin/home.php <?php if (!defined('BASEPATH')) exit('No direct script access allowed'); class home{ public function __construct(){ $task = lc('uri')->get(TASK_KEY, 'home'); if(!method_exists($this,'web_'.$task) || !is_callable(array($this,'web_'.$task))){ $task = 'home'; } ll('display')->assign('task',$task); $this->{'web_'.$task}(); } public function web_home(){ $page_title = 'Home Page'; ll('display')->assign('title', $page_title); ll('display')->show('home'); } } ?> P.S.: Soon the __construct will be optional
What does the Code Look Like 2 Sample Code: www.mysite.com/home.html The extension (.html) is optional and configurable /fabric/tpl/home.php <html> <head> <title><?=$title?></title> </head> <body> Welcome !! <br /><br /> The Current Task is <?=$task?>;<br /><br /> And now let's Generate a warning message <?=$nonexistent_var?><br /><br /> Let's Output All the assigned vars <?php ll('output')->debug($this->get()); //ll('output')->debug($this->get(), '_DIE'); //This will kill the page after the output ?> </body> </html> Page won't be generated until the /bin/home.php class finishes
WHERE TO FIND IT ? • Soon to be posted on github. as soon as I figure out how WEBSITE ? • None yet.... planning on www.phpfabric.com WANT TO TRY IT OUT ? • email me at fabrizio@bibivu.com and I'll email you a zip file suggestions are very VERY welcome See it in action on: • www.queensboro.com • www.pbidir.com • www.storefrunt.com • www.bsdstats.org