Download presentation
Presentation is loading. Please wait.
Published byBritton Barber Modified over 9 years ago
1
PHP + Framework + MVC CakePHP Lectures 1
2
What is Framework? CakePHP Lectures 2
3
Common code - Generic functionality Extensible - Specific functionality Unlike library – Flow Dictated by Framework CakePHP Lectures 3
4
Reusable Design- May include: Support programs Code libraries Tools to develop and glue different components CakePHP Lectures 4
5
Why a Framework? CakePHP Lectures 5
6
I am lazy enough to write long codes, NAAAH... CakePHP Lectures 6
7
Technical Aspects: Proven Architecture Efficient (Code Re-usability) Scalable Extensible Modularity CakePHP Lectures 7
8
Developer Aspects: Easier maintenance Shorter development times. Flexible and less error-prone CakePHP Lectures 8
9
Focus => Specialized Functionality NOT Architecture Common Tools Work Flow CakePHP Lectures 9
10
How to choose Framework? CakePHP Lectures 10
11
CakePHP Lectures 11
12
Ofcourse, NOT CakePHP Lectures 12
13
Technical Aspects: Types of application, Types of framework Technical features of the framework Ease of development Ease of testing Tool support CakePHP Lectures 13
14
Viability Aspects: Frequent release Future enhancement Maturity – real life usage cases Proven market place? Production Environments? CakePHP Lectures 14
15
So, which one? CakePHP Lectures 15
16
The one which answers most of the above questions. CakePHP Lectures 16
17
PHP + Framework + MVC CakePHP CakePHP Lectures 17
18
Free Open Source Rapid Application Development Active Community Compatibility with PHP4 and PHP5 Project Age - 5yrs CakePHP Lectures 18
19
MVC Scaffolding Validation Data Sanitation ACL Components Helpers Security Session Caching CakePHP Lectures 19
20
Easy Installation – 2 Mins Easy Debugging Integrated Unit Testing CakePHP Lectures 20
21
Setting Up Cake: Setup Database Configuration CakePHP supports database drivers: mysql postgres sqlite pear-drivername (e.g. pear-mysql) adodb-drivername CakePHP Lectures 21
22
Cake Folder Structure CakePHP Lectures22 app/ config/ controllers/ models/ plugins/ tmp/ vendors/ views/ webroot/ cake/ config/ docs/ libs/ vendors/
23
CakePHP Lectures23 FolderWhat it Contains config Holds the (few) configuration files CakePHP uses. Database connection details, bootstrapping, core configuration files and more should be stored here. controllers Contains your application’s controllers and their components. localeStores string files for internationalization. models Contains your application’s models, behaviors, and datasources. pluginsContains plugin packages. tmp This is where CakePHP stores temporary data. The actual data it stores depends on how you have CakePHP configured, but this folder is usually used to store model descriptions, logs, and sometimes session information. Make sure that this folder exists and that it is writable, otherwise the performance of your application will be severely impacted. In debug mode, CakePHP will warn you if it is not the case. vendors Any third-party classes or libraries should be placed here. Doing so makes them easy to access using the App::import('vendor', 'name') function. Keen observers will note that this seems redundant, as there is also a vendors folder at the top level of our directory structure. We'll get into the differences between the two when we discuss managing multiple applications and more complex system setups. views Presentational files are placed here: elements, error pages, helpers, layouts, and view files. webroot In a production setup, this folder should serve as the document root for your application. Folders here also serve as holding places for CSS stylesheets, images, and JavaScript files.
24
The app folder will be where you work your magic: it’s where your application’s files will be placed. The cake folder is where we’ve worked our magic. Make a personal commitment not to edit files in this folder. We can’t help you if you’ve modified the core. Finally, the vendors folder is where you’ll place third-party PHP libraries you need to use with your CakePHP applications. CakePHP Lectures24
25
Models: Access point to a certain table in the database Contain data validation rules, association information, and methods specific to the table Extends AppModel CakePHP Lectures 25
26
Models: Table name in plural, like "users" and models in singular “user”. Mandatory Primary key named 'id'. Foreign keys naming: 'article_id'. (singular-table-name_id). 'created' / 'modified' column are automatically populated. CakePHP Lectures 26
27
Controllers: Manage the logic for a certain section or a single model. Include any number of actions Actions are functions used in your web application to display views Extends AppController CakePHP Lectures 27
28
class VideosController extends AppController { function view($id) { //action logic goes here.. } function rent($customer_id, $video_id) { //action logic goes here.. } function search($query) { //action logic goes here.. } example URLs: http://www.example.com/videos/view/253 http://www.example.com/videos/rent/5124/0-2352 CakePHP Lectures 28
29
Controller action as a webservice Set WEBSERVICES in / app/config/core.php to 'on' Structure the logic in controller just as you normally would CakePHP Lectures 29
30
Views: a page template, usually named after an action. view for PostsController::add() would be found at /app/views/posts/add.ctp. simply PHP files, so you can use any PHP code inside them CakePHP Lectures 30
31
Views: data is passed as an array called $data data handed to the view using set() in the controller is also available in view. HTML helper is available in every view by default layout contains presentational code that wraps around view. Usually, common for one controller. CakePHP Lectures 31
32
Scaffolding: Way of getting the early parts of developing a web application started. Analyze database tables and creates standard lists, add, delete, edit. Add scaffolding by adding the $scaffold variable to controller. CakePHP Lectures 32
33
Components: Components are used to aid controllers in specific situations. A Reusable code which seamlessly sits inside Controller Sample Component Class class FooComponent extends Object { var $someVar = null; var $controller = true; function startup(&$controller) { // Perform controller initialization here. } function doFoo() { $this->someVar = 'foo'; } CakePHP Lectures 33
34
add the following code in your controller's definition: var $components = array('Foo'); Inside of that controller you could now use: $this->Foo->doFoo(); CakePHP Lectures 34
35
Helpers: Common functions to format views. Quick-and-easy creation of web forms image ( $path, $htmlAttributes, $return = false ); Renders an image tag. tableHeaders ( $names, $tr_options, $th_options ); create a formatted table header. CakePHP Lectures 35
36
Other Helpers: AJAX Javascript Number Text Time Cache (You can create your own helper.) CakePHP Lectures 36
37
Data Validation: Data in a Model conforms to the business rules. Example /app/models/user.php <?php class User extends AppModel { var $name = 'User'; var $validate = array( 'login' => '/[a-z0-9\_\-]{3,}$/i', 'password' => VALID_NOT_EMPTY, 'email' => VALID_EMAIL, 'born' => VALID_NUMBER ); } ?> CakePHP Lectures 37
38
Plugins: Distribute combination of controllers, models, and views as package. Example: Pizza Ordering Filesystem Layout /app /plugins /pizza /controllers <- plugin controllers go here /models <- plugin models go here /views <- plugin views go here /pizza_app_controller.php <- plugin's AppController,named after the plugin /pizza_app_model.php <- plugin's AppModel, named after the plugin CakePHP Lectures 38
39
ACL: Access Request Objects (AROs) and Access Control Objects (ACOs) $aro = new Aro(); // Create ARO $aro->create( 1, null, 'Bob Marley' ); // Create Groups $aro->create(0, null, 'Artists'); //Hook ARO with Group $aro->setParent('Artists', 'Bob Marley'); CakePHP Lectures 39
40
Creating ACOs and assigning permissions $aco = new Aco(); //Create some access control objects: $aco->create(1, null, 'Electric Guitar'); $this->Acl->allow('Abraham Lincoln', 'Electric Guitar','read'); CakePHP Lectures 40
41
// Check Access $access = $this->Acl->check($this->Session-> read('user_alias'), $aco, $action = "*"); //access denied if ($access === false) { echo "access denied"; exit; } CakePHP Lectures 41
42
Data Sanitation: Makes User Given Data Safe for use in SQL and HTML // First, include library and instantiate: uses('sanitize'); $mrClean = new Sanitize(); $badString = ";: @@#"; echo $mrClean->paranoid($badString); // output: scripthtml echo $mrClean->paranoid($badString, array(' ', '@')); // output: scripthtml @@ CakePHP Lectures 42
43
Sessions: Here are some of the functions you'll use most: check ($name); del ($name); delete ($name); Error (); flash ($key = 'flash'); read ($name); renew (); ; CakePHP Lectures 43
44
Security: RequirePost() class ThingsController extends AppController { var $components = array('Security'); function beforeFilter() { $this->Security->requirePost('delete'); } function delete($id) { // This will only happen if the action is called via an HTTP POST request $this->Thing->del($id); } CakePHP Lectures 44
45
5 Mins Blog Tutorial with Unit Testing CakePHP Lectures 45
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.