Rails for PHP Developers

Total Page:16

File Type:pdf, Size:1020Kb

Rails for PHP Developers What readers are saying about Rails for PHP Developers This is a thorough and approachable introduction to Ruby and Rails for PHP programmers from fellow developers who are well-versed in both Ruby and PHP. Paul M. Jones Lead Developer on the Solar Framework for PHP As a PHP developer, I found the book focused well on the transition from coding PHP to coding Ruby (and Rails) and that it gave great examples of translating common PHP idioms to Ruby. Matthew Weier O’Phinney PHP Developer and Zend Framework Core Contributor The quality of the writing is superb, the challenges and examples are engaging, and the PHP to Ruby information is a valuable resource. The exercises are nice, are short, and follow the topic well, giving readers some creative time between each chapter. Mislav Marohnic´ Prototype JavaScript Framework Core Developer This is an enjoyable book packed with great information and usable examples. I like the organization of the book and the gentle, infor- mal voice with which the authors cover many complex topics. It’s easy to read, yet it has plenty of substance and depth to give the reader a great introduction to Rails. Bill Karwin MySQL Guild and Former Zend Framework Project Leader Rails for PHP Developers Derek DeVries Mike Naberezny The Pragmatic Bookshelf Raleigh, North Carolina Dallas, Texas Many of the designations used by manufacturers and sellers to distinguish their prod- ucts are claimed as trademarks. Where those designations appear in this book, and The Pragmatic Programmers, LLC was aware of a trademark claim, the designations have been printed in initial capital letters or in all capitals. The Pragmatic Starter Kit, The Pragmatic Programmer, Pragmatic Programming, Pragmatic Bookshelf and the linking g device are trademarks of The Pragmatic Programmers, LLC. Every precaution was taken in the preparation of this book. However, the publisher assumes no responsibility for errors or omissions, or for damages that may result from the use of information (including program listings) contained herein. Our Pragmatic courses, workshops, and other products can help you and your team create better software and have more fun. For more information, as well as the latest Pragmatic titles, please visit us at http://www.pragprog.com Copyright © 2008 Derek DeVries and Mike Naberezny. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmit- ted, in any form, or by any means, electronic, mechanical, photocopying, recording, or otherwise, without the prior consent of the publisher. Printed in the United States of America. ISBN-10: 1-934356-04-2 ISBN-13: 978-1-9343560-4-3 Printed on acid-free paper with 50% recycled, 15% post-consumer content. First printing, January 2008 Contents Acknowledgments 10 Preface 11 What Rails Offers .......................... 11 Who Should Read This Book ................... 12 Resources .............................. 12 PHP and Rails: A Personal View .................. 13 About the Code Examples ..................... 14 About the Environment Used ................... 14 Version Requirements ....................... 15 How to Read This Book ....................... 15 I From PHP to Rails 17 1 Getting Started with Rails 18 1.1 Rails as an Extension of Ruby .............. 18 1.2 The Components of Rails ................. 19 1.3 Opinionated Software ................... 20 1.4 The MVC Pattern and Rails ................ 22 1.5 Installing Ruby and Rails ................. 24 1.6 Creating a Rails App .................... 25 1.7 Chapter Review ....................... 42 1.8 Exercises ........................... 42 2 Beginning Ruby Code 43 2.1 Seeing Ruby as a General-Purpose Language . 43 2.2 Interacting with Ruby ................... 45 2.3 Objectifying Everything .................. 47 2.4 Accepting Ruby’s Object World .............. 48 2.5 Assigning to Variables ................... 50 2.6 Writing Methods and Passing Parameters . 53 2.7 Controlling Program Flow ................. 57 CONTENTS 6 2.8 Handling Errors ....................... 59 2.9 Understanding Blocks ................... 65 2.10 Chapter Review ....................... 70 2.11 Exercises ........................... 71 3 Embracing the Ruby Philosophy 72 3.1 Thinking in Objects .................... 72 3.2 Understanding Attributes ................. 75 3.3 Method Visibility ...................... 77 3.4 Understanding Typing ................... 79 3.5 Implementing Interfaces with Mixins .......... 84 3.6 Organizing Code with Namespaces ............ 88 3.7 Overriding Operators .................... 91 3.8 Reopening Classes ..................... 93 3.9 Chapter Review ....................... 95 3.10 Exercises ........................... 95 II Building a Rails Application 96 4 Modeling the Domain 97 4.1 Defining Requirements .................. 98 4.2 Using the Database .................... 101 4.3 Creating the Application .................. 104 4.4 Generating the First Model ................ 106 4.5 Building Database Tables ................. 108 4.6 Employing ActiveRecord .................. 113 4.7 Chapter Review ....................... 118 4.8 Exercises ........................... 119 5 Working with Controllers and Views 120 5.1 Identifying Resources ................... 120 5.2 Creating Controllers .................... 122 5.3 Routing Requests ...................... 125 5.4 Retrieving Meeting Data .................. 129 5.5 Viewing Meetings ...................... 131 5.6 Adding Links ........................ 132 5.7 Creating New Meetings .................. 138 5.8 Redirection and Flash Data ................ 143 5.9 Administrating Meetings .................. 145 5.10 Separating Public Files .................. 153 5.11 Adding a Layout ...................... 155 CONTENTS 7 5.12 Chapter Review ....................... 158 5.13 Exercises ........................... 160 6 Validating and Testing Models 161 6.1 Validating Model Data ................... 161 6.2 Using Rails Environments ................. 164 6.3 Testing Our Models ..................... 165 6.4 Chapter Review ....................... 171 6.5 Exercises ........................... 172 7 Authenticating Users 173 7.1 Migrating to a More Secure User ............. 173 7.2 User Registration ...................... 175 7.3 Viewing and Editing Users ................ 186 7.4 Restoring Sessions ..................... 192 7.5 LoggingIn .......................... 195 7.6 Chapter Review ....................... 200 7.7 Exercises ........................... 200 8 Defining Associations 202 8.1 Connecting Presentations ................. 202 8.2 Testing Associations .................... 205 8.3 Integrating Presentations into Meetings ......... 207 8.4 Routing Presentations ................... 208 8.5 The Presentation Controller ................ 210 8.6 Spring Cleaning ....................... 215 8.7 Chapter Review ....................... 221 8.8 Exercises ........................... 222 9 Preparing to Launch 223 9.1 Adding the Home Page ................... 223 9.2 Securing Our Actions ................... 226 9.3 Protecting from Mass Assignment ............ 232 9.4 Caching the Pages ..................... 234 9.5 Chapter Review ....................... 240 9.6 Exercises ........................... 240 10 Deploying the Application 242 10.1 Choosing a Host ...................... 243 10.2 The Production Environment ............... 245 10.3 Preparing Our Application ................. 246 10.4 Preparing Our Deployment Server ............ 248 CONTENTS 8 10.5 Launching the Application ................ 253 10.6 Enhancing Performance .................. 256 10.7 Scaling Your Application .................. 260 10.8 Chapter Review ....................... 261 10.9 Exercises ........................... 262 III PHP to Ruby at a Glance 263 11 PHP to Ruby Basics Reference 264 11.1 Basic Syntax ........................ 264 11.2 Basic Data Types ...................... 266 11.3 Variables ........................... 284 11.4 Constants .......................... 292 11.5 Expressions ......................... 294 11.6 Operators .......................... 296 11.7 Control Structures ..................... 305 12 PHP to Ruby Advanced Reference 316 12.1 Blocks ............................ 316 12.2 Functions .......................... 318 12.3 Classes and Objects .................... 326 12.4 Exceptions .......................... 354 12.5 References .......................... 355 12.6 External Libraries and Packages ............. 357 12.7 Documenting Code ..................... 359 13 PHP to Rails Reference 371 13.1 Templates .......................... 371 13.2 $_GET/$_POST ....................... 372 13.3 $_FILES ........................... 373 13.4 $_SERVER .......................... 376 13.5 Cookies ............................ 376 13.6 Sessions ........................... 378 13.7 Headers and Redirection ................. 380 13.8 Security ........................... 381 13.9 Debugging .......................... 386 13.10 Accessing the Database .................. 388 13.11 Email ............................. 390 13.12 Testing Rails Code ..................... 391 13.13 Rails Plug-Ins ........................ 396 CONTENTS 9 Bibliography 399 Index 400 Acknowledgments Derek would like to thank Melissa, daVinci, and his new baby girl, Sevilla, who was born during the writing of this preface. Mike would like to thank Kathy for her support and his parents for buying his first computer, the Commodore 64. We’d like to thank our reviewers: Bill Karwin, Mislav Marohnic, Tim Fletcher, Paul M. Jones, Matthew
Recommended publications
  • Differential Fuzzing the Webassembly
    Master’s Programme in Security and Cloud Computing Differential Fuzzing the WebAssembly Master’s Thesis Gilang Mentari Hamidy MASTER’S THESIS Aalto University - EURECOM MASTER’STHESIS 2020 Differential Fuzzing the WebAssembly Fuzzing Différentiel le WebAssembly Gilang Mentari Hamidy This thesis is a public document and does not contain any confidential information. Cette thèse est un document public et ne contient aucun information confidentielle. Thesis submitted in partial fulfillment of the requirements for the degree of Master of Science in Technology. Antibes, 27 July 2020 Supervisor: Prof. Davide Balzarotti, EURECOM Co-Supervisor: Prof. Jan-Erik Ekberg, Aalto University Copyright © 2020 Gilang Mentari Hamidy Aalto University - School of Science EURECOM Master’s Programme in Security and Cloud Computing Abstract Author Gilang Mentari Hamidy Title Differential Fuzzing the WebAssembly School School of Science Degree programme Master of Science Major Security and Cloud Computing (SECCLO) Code SCI3084 Supervisor Prof. Davide Balzarotti, EURECOM Prof. Jan-Erik Ekberg, Aalto University Level Master’s thesis Date 27 July 2020 Pages 133 Language English Abstract WebAssembly, colloquially known as Wasm, is a specification for an intermediate representation that is suitable for the web environment, particularly in the client-side. It provides a machine abstraction and hardware-agnostic instruction sets, where a high-level programming language can target the compilation to the Wasm instead of specific hardware architecture. The JavaScript engine implements the Wasm specification and recompiles the Wasm instruction to the target machine instruction where the program is executed. Technically, Wasm is similar to a popular virtual machine bytecode, such as Java Virtual Machine (JVM) or Microsoft Intermediate Language (MSIL).
    [Show full text]
  • Chapter 5 Names, Bindings, and Scopes
    Chapter 5 Names, Bindings, and Scopes 5.1 Introduction 198 5.2 Names 199 5.3 Variables 200 5.4 The Concept of Binding 203 5.5 Scope 211 5.6 Scope and Lifetime 222 5.7 Referencing Environments 223 5.8 Named Constants 224 Summary • Review Questions • Problem Set • Programming Exercises 227 CMPS401 Class Notes (Chap05) Page 1 / 20 Dr. Kuo-pao Yang Chapter 5 Names, Bindings, and Scopes 5.1 Introduction 198 Imperative languages are abstractions of von Neumann architecture – Memory: stores both instructions and data – Processor: provides operations for modifying the contents of memory Variables are characterized by a collection of properties or attributes – The most important of which is type, a fundamental concept in programming languages – To design a type, must consider scope, lifetime, type checking, initialization, and type compatibility 5.2 Names 199 5.2.1 Design issues The following are the primary design issues for names: – Maximum length? – Are names case sensitive? – Are special words reserved words or keywords? 5.2.2 Name Forms A name is a string of characters used to identify some entity in a program. Length – If too short, they cannot be connotative – Language examples: . FORTRAN I: maximum 6 . COBOL: maximum 30 . C99: no limit but only the first 63 are significant; also, external names are limited to a maximum of 31 . C# and Java: no limit, and all characters are significant . C++: no limit, but implementers often impose a length limitation because they do not want the symbol table in which identifiers are stored during compilation to be too large and also to simplify the maintenance of that table.
    [Show full text]
  • Codeigniter-Testing-Guide-Sample.Pdf
    CodeIgniter Testing Guide Beginners’ Guide to Automated Testing in PHP. Kenji Suzuki and Mat Whitney This book is for sale at http://leanpub.com/codeigniter-testing-guide This version was published on 2016-01-23 This is a Leanpub book. Leanpub empowers authors and publishers with the Lean Publishing process. Lean Publishing is the act of publishing an in-progress ebook using lightweight tools and many iterations to get reader feedback, pivot until you have the right book and build traction once you do. © 2015 - 2016 Kenji Suzuki and Mat Whitney Tweet This Book! Please help Kenji Suzuki and Mat Whitney by spreading the word about this book on Twitter! The suggested hashtag for this book is #CITestGuide. Find out what other people are saying about the book by clicking on this link to search for this hashtag on Twitter: https://twitter.com/search?q=#CITestGuide Contents Preface ............................................... i The Book at a Glance ..................................... i What You Need for This Book ................................. iii Who should read This Book? ................................. iii Why PHPUnit? ........................................ iv Is This a CodeIgniter Book? .................................. iv Is Testing PHP Applications Difficult? ............................ iv Is Testing CodeIgniter Applications Difficult? .................... v Testing is Fun and Easy ................................ v Conventions Used in This Book ................................ v Errata .............................................
    [Show full text]
  • A Concurrent PASCAL Compiler for Minicomputers
    512 Appendix A DIFFERENCES BETWEEN UCSD'S PASCAL AND STANDARD PASCAL The PASCAL language used in this book contains most of the features described by K. Jensen and N. Wirth in PASCAL User Manual and Report, Springer Verlag, 1975. We refer to the PASCAL defined by Jensen and Wirth as "Standard" PASCAL, because of its widespread acceptance even though no international standard for the language has yet been established. The PASCAL used in this book has been implemented at University of California San Diego (UCSD) in a complete software system for use on a variety of small stand-alone microcomputers. This will be referred to as "UCSD PASCAL", which differs from the standard by a small number of omissions, a very small number of alterations, and several extensions. This appendix provides a very brief summary Of these differences. Only the PASCAL constructs used within this book will be mentioned herein. Documents are available from the author's group at UCSD describing UCSD PASCAL in detail. 1. CASE Statements Jensen & Wirth state that if there is no label equal to the value of the case statement selector, then the result of the case statement is undefined. UCSD PASCAL treats this situation by leaving the case statement normally with no action being taken. 2. Comments In UCSD PASCAL, a comment appears between the delimiting symbols "(*" and "*)". If the opening delimiter is followed immediately by a dollar sign, as in "(*$", then the remainder of the comment is treated as a directive to the compiler. The only compiler directive mentioned in this book is (*$G+*), which tells the compiler to allow the use of GOTO statements.
    [Show full text]
  • Mixins and Traits
    ◦ ◦◦◦ TECHNISCHE UNIVERSITAT¨ MUNCHEN¨ ◦◦◦◦ ◦ ◦ ◦◦◦ ◦◦◦◦ ¨ ¨ ◦ ◦◦ FAKULTAT FUR INFORMATIK Programming Languages Mixins and Traits Dr. Michael Petter Winter 2016/17 What advanced techiques are there besides multiple implementation inheritance? Outline Design Problems Cons of Implementation Inheritance 1 Inheritance vs Aggregation 1 2 (De-)Composition Problems Lack of finegrained Control 2 Inappropriate Hierarchies Inheritance in Detail A Focus on Traits 1 A Model for single inheritance 1 2 Inheritance Calculus with Separation of Composition and Inheritance Expressions Modeling 2 3 Modeling Mixins Trait Calculus Mixins in Languages Traits in Languages 1 (Virtual) Extension Methods 1 Simulating Mixins 2 Squeak 2 Native Mixins Reusability ≡ Inheritance? Codesharing in Object Oriented Systems is often inheritance-centric. Inheritance itself comes in different flavours: I single inheritance I multiple inheritance All flavours of inheritance tackle problems of decomposition and composition The Adventure Game Door ShortDoor LockedDoor canPass(Person p) canOpen(Person p) ? ShortLockedDoor canOpen(Person p) canPass(Person p) The Adventure Game Door <interface>Doorlike canPass(Person p) canOpen(Person p) Short canPass(Person p) Locked canOpen(Person p) ShortLockedDoor ! Aggregation & S.-Inheritance Door must explicitely provide canOpen(Person p) chaining canPass(Person p) Doorlike must anticipate wrappers ) Multiple Inheritance X The Wrapper FileStream SocketStream read() read() write() write() ? SynchRW acquireLock() releaseLock() ! Inappropriate Hierarchies
    [Show full text]
  • YOSSEF BENHAROSH RESUME 972 (0) 544-308209 | [email protected] | Kiryat Gat, Israel
    YOSSEF BENHAROSH RESUME 972 (0) 544-308209 | [email protected] | Kiryat Gat, Israel PHP & Drupal developer, June 2011 – present Freelance web developer for 4 years who works with the following technologies: PHP, MySQL, Javascript, jQuery, Drupal, HTML/HTML5, CSS/CSS3. Specializes in PHP development. Including: Object-Oriented Programming, mySQL as a data base, and Laravel as a framework. Drupal developer, specializing in developing new modules and themes, and in taming existing modules. Good working knowledge of organic SEO. Chosen works freefax.co.il – PHP site that provides fax services. I worked as a PHP and mySQL programmer, as well as on the front end with jQuery, Ajax, html and CSS. I wrote the cart and invoice modules and the user class. puzzlemedia.co.il – Bilingual Drupal website for film producers. www.yaronlivne.co.il – Drupal based app that I wrote most of its modules and developed its’ theme. ZEZBRA – A startup that I themed its Drupal site, as well as developed its PHP based cellular version. reshetech.co.il – Hebrew tutorials website based on PHP. phpenthusiast.com – English tutorials website devoted to Object Oriented PHP. Github projects myAPI – I think it is the simplest way to provide API services for small businesses that want to provide data based services to their customers. csvtax – Drupal 7 module that transforms a CSV file into hierarchical taxonomy. cornerslider – A jQuery popup that slides the content in and out when the user scrolls down and up the page. Technologies Back end programming languages: PHP, mySQL. Front end programming languages: CSS/3, HTML/5, javascript.
    [Show full text]
  • Declaring Vars in Class Php
    Declaring Vars In Class Php Is Tobe Esculapian or misformed after aluminous Neall plopping so magnanimously? Forrest corresponds prolixly? Forbidden Osmund sometimes pargets any lilliputian yell guardedly. How variable as int, php in using interpolation rather than configured one of people prefer to override whatever information useful whenever you call it leads to expose parts that We daily work with advertisers relevant to our readers. Acceptable in php programmers and retry saving again, declaration must be. Declaring a property but a class is an exact task use one table the keyword public protected or private followed by a normal variable declaration If. If you wrong there holding an IE bug with var a foo only declaring a global for file scope. Your class declaration format is declared protected field? You help also define methods in the class that allow tool to manipulate the values of object properties and perform operations on objects. PHP Class Properties Tutorials by Supun Kavinda. An amazon associate we declare the class in declarations as containers for our clients in the usages of a name given client exits and in? How clean and in declaring a class declaration scope in the vars of that are their parent selector. Using long array syntax array 1 2 3 for declaring arrays is generally. By declaring a class declaration, classes and see for? It turns out some interview situations, every time to magento source and other class names but you have a common occurrence, therefore considered a value. The var keyword in PHP is used to declare the property or variable of class which is primitive by default The var keyword is alike as out when declaring variables or root of a class Note The var keyword was deprecated from version 50.
    [Show full text]
  • WHO Guidance on Management of Snakebites
    GUIDELINES FOR THE MANAGEMENT OF SNAKEBITES 2nd Edition GUIDELINES FOR THE MANAGEMENT OF SNAKEBITES 2nd Edition 1. 2. 3. 4. ISBN 978-92-9022- © World Health Organization 2016 2nd Edition All rights reserved. Requests for publications, or for permission to reproduce or translate WHO publications, whether for sale or for noncommercial distribution, can be obtained from Publishing and Sales, World Health Organization, Regional Office for South-East Asia, Indraprastha Estate, Mahatma Gandhi Marg, New Delhi-110 002, India (fax: +91-11-23370197; e-mail: publications@ searo.who.int). The designations employed and the presentation of the material in this publication do not imply the expression of any opinion whatsoever on the part of the World Health Organization concerning the legal status of any country, territory, city or area or of its authorities, or concerning the delimitation of its frontiers or boundaries. Dotted lines on maps represent approximate border lines for which there may not yet be full agreement. The mention of specific companies or of certain manufacturers’ products does not imply that they are endorsed or recommended by the World Health Organization in preference to others of a similar nature that are not mentioned. Errors and omissions excepted, the names of proprietary products are distinguished by initial capital letters. All reasonable precautions have been taken by the World Health Organization to verify the information contained in this publication. However, the published material is being distributed without warranty of any kind, either expressed or implied. The responsibility for the interpretation and use of the material lies with the reader. In no event shall the World Health Organization be liable for damages arising from its use.
    [Show full text]
  • Learning Javascript Design Patterns
    Learning JavaScript Design Patterns Addy Osmani Beijing • Cambridge • Farnham • Köln • Sebastopol • Tokyo Learning JavaScript Design Patterns by Addy Osmani Copyright © 2012 Addy Osmani. All rights reserved. Revision History for the : 2012-05-01 Early release revision 1 See http://oreilly.com/catalog/errata.csp?isbn=9781449331818 for release details. ISBN: 978-1-449-33181-8 1335906805 Table of Contents Preface ..................................................................... ix 1. Introduction ........................................................... 1 2. What is a Pattern? ...................................................... 3 We already use patterns everyday 4 3. 'Pattern'-ity Testing, Proto-Patterns & The Rule Of Three ...................... 7 4. The Structure Of A Design Pattern ......................................... 9 5. Writing Design Patterns ................................................. 11 6. Anti-Patterns ......................................................... 13 7. Categories Of Design Pattern ............................................ 15 Creational Design Patterns 15 Structural Design Patterns 16 Behavioral Design Patterns 16 8. Design Pattern Categorization ........................................... 17 A brief note on classes 17 9. JavaScript Design Patterns .............................................. 21 The Creational Pattern 22 The Constructor Pattern 23 Basic Constructors 23 Constructors With Prototypes 24 The Singleton Pattern 24 The Module Pattern 27 iii Modules 27 Object Literals 27 The Module Pattern
    [Show full text]
  • Mixin-Based Programming in C++1
    Mixin-Based Programming in C++1 Yannis Smaragdakis Don Batory College of Computing Department of Computer Sciences Georgia Institute of Technology The University of Texas at Austin Atlanta, GA 30332 Austin, Texas 78712 [email protected] [email protected] Abstract. Combinations of C++ features, like inheritance, templates, and class nesting, allow for the expression of powerful component patterns. In particular, research has demonstrated that, using C++ mixin classes, one can express lay- ered component-based designs concisely with efficient implementations. In this paper, we discuss pragmatic issues related to component-based programming using C++ mixins. We explain surprising interactions of C++ features and poli- cies that sometimes complicate mixin implementations, while other times enable additional functionality without extra effort. 1 Introduction Large software artifacts are arguably among the most complex products of human intellect. The complexity of software has led to implementation methodologies that divide a problem into manageable parts and compose the parts to form the final prod- uct. Several research efforts have argued that C++ templates (a powerful parameteriza- tion mechanism) can be used to perform this division elegantly. In particular, the work of VanHilst and Notkin [29][30][31] showed how one can implement collaboration-based (or role-based) designs using a certain templatized class pattern, known as a mixin class (or just mixin). Compared to other techniques (e.g., a straightforward use of application frameworks [17]) the VanHilst and Notkin method yields less redundancy and reusable components that reflect the structure of the design. At the same time, unnecessary dynamic binding can be eliminated, result- ing into more efficient implementations.
    [Show full text]
  • Php Tutorial
    PHP About the Tutorial The PHP Hypertext Preprocessor (PHP) is a programming language that allows web developers to create dynamic content that interacts with databases. PHP is basically used for developing web-based software applications. This tutorial will help you understand the basics of PHP and how to put it in practice. Audience This tutorial has been designed to meet the requirements of all those readers who are keen to learn the basics of PHP. Prerequisites Before proceeding with this tutorial, you should have a basic understanding of computer programming, Internet, Database, and MySQL. Copyright & Disclaimer © Copyright 2016 by Tutorials Point (I) Pvt. Ltd. All the content and graphics published in this e-book are the property of Tutorials Point (I) Pvt. Ltd. The user of this e-book is prohibited to reuse, retain, copy, distribute or republish any contents or a part of contents of this e-book in any manner without written consent of the publisher. We strive to update the contents of our website and tutorials as timely and as precisely as possible, however, the contents may contain inaccuracies or errors. Tutorials Point (I) Pvt. Ltd. provides no guarantee regarding the accuracy, timeliness or completeness of our website or its contents including this tutorial. If you discover any errors on our website or in this tutorial, please notify us at [email protected] i PHP Table of Contents About the Tutorial ...........................................................................................................................................
    [Show full text]
  • Cakephp Cookbook Documentation Release 4.X
    CakePHP Cookbook Documentation Release 4.x Cake Software Foundation Sep 25, 2021 Contents 1 CakePHP at a Glance 1 Conventions Over Configuration........................................1 The Model Layer................................................1 The View Layer.................................................2 The Controller Layer..............................................2 CakePHP Request Cycle............................................3 Just the Start...................................................4 Additional Reading...............................................4 2 Quick Start Guide 13 Content Management Tutorial......................................... 13 CMS Tutorial - Creating the Database..................................... 15 CMS Tutorial - Creating the Articles Controller................................ 19 3 4.0 Migration Guide 29 Deprecated Features Removed......................................... 29 Deprecations.................................................. 29 Breaking Changes................................................ 31 New Features.................................................. 37 4 Tutorials & Examples 41 Content Management Tutorial......................................... 41 CMS Tutorial - Creating the Database..................................... 43 CMS Tutorial - Creating the Articles Controller................................ 47 CMS Tutorial - Tags and Users......................................... 56 CMS Tutorial - Authentication......................................... 64 CMS Tutorial - Authorization.........................................
    [Show full text]