Presentation is loading. Please wait.

Presentation is loading. Please wait.

PHP + Framework + MVC CakePHP Lectures 1. What is Framework? CakePHP Lectures 2.

Similar presentations


Presentation on theme: "PHP + Framework + MVC CakePHP Lectures 1. What is Framework? CakePHP Lectures 2."— Presentation transcript:

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


Download ppt "PHP + Framework + MVC CakePHP Lectures 1. What is Framework? CakePHP Lectures 2."

Similar presentations


Ads by Google