FuelPHP Application Development Blueprints
()
About this ebook
- Construct top-notch web applications with one of the best frameworks based on PHP
- Implement new functionalities using FuelPHP’s convenient utilities and features such as the ORM, modules, packages, and the oil utility
- Step-by-step tutorial that provides real-world examples and insight into FuelPHP
This book is for intermediary to seasoned web developers who want to learn how to use the FuelPHP framework and build complex projects using it. You should be familiar with PHP, HTML, CSS, and JavaScript, but no prior knowledge about MVC frameworks is required.
Related to FuelPHP Application Development Blueprints
Related ebooks
Full-Stack React Projects: Learn MERN stack development by building modern web apps using MongoDB, Express, React, and Node.js Rating: 4 out of 5 stars4/5Beginning PHP: Master the latest features of PHP 7 and fully embrace modern PHP development Rating: 0 out of 5 stars0 ratingsLearning Phalcon PHP Rating: 0 out of 5 stars0 ratingsWordPress Web Application Development - Second Edition Rating: 0 out of 5 stars0 ratingsPHP 8 Revealed: Use Attributes, the JIT Compiler, Union Types, and More for Web Development Rating: 0 out of 5 stars0 ratingsInstant Yii 1.1 Application Development Starter Rating: 5 out of 5 stars5/5Hyperledger Fabric A Complete Guide - 2020 Edition Rating: 0 out of 5 stars0 ratingsCSS Mastery: Styling Web Pages Like a Pro Rating: 0 out of 5 stars0 ratingsIllustrator CS5 Digital Classroom Rating: 0 out of 5 stars0 ratingsjQuery 2.0 Development Cookbook Rating: 0 out of 5 stars0 ratingsHTML5 Web Application Development By Example Beginner's guide Rating: 0 out of 5 stars0 ratingsHello! iOS Development Rating: 0 out of 5 stars0 ratingsLearning jQuery Rating: 4 out of 5 stars4/5HTML5 for Flash Developers Rating: 5 out of 5 stars5/5Getting Started with Bootstrap 3.2 Rating: 0 out of 5 stars0 ratingsIntroduction to C Programming, a Practical Approach Rating: 0 out of 5 stars0 ratingsAndroid Application Development with Maven Rating: 0 out of 5 stars0 ratingsPHP BLUEPRINT: An Essential Beginners Guide to Learn the Realms of PHP From A-Z Rating: 0 out of 5 stars0 ratingsCloning Internet Applications with Ruby Rating: 5 out of 5 stars5/5Beginning Anomaly Detection Using Python-Based Deep Learning: With Keras and PyTorch Rating: 0 out of 5 stars0 ratingsPHP Programming Solutions Rating: 0 out of 5 stars0 ratingsGetting Started with Grunt: The JavaScript Task Runner Rating: 3 out of 5 stars3/5PHP for Beginners Rating: 0 out of 5 stars0 ratingsLearning LibGDX Game Development - Second Edition Rating: 0 out of 5 stars0 ratingsMeteor Design Patterns Rating: 0 out of 5 stars0 ratingsMastering Lisp Programming: From Basics to Expert Proficiency Rating: 0 out of 5 stars0 ratingsInstant IntroJs Rating: 0 out of 5 stars0 ratingsLean Mobile App Development: Apply Lean startup methodologies to develop successful iOS and Android apps Rating: 0 out of 5 stars0 ratings
Internet & Web For You
Coding All-in-One For Dummies Rating: 4 out of 5 stars4/5No Place to Hide: Edward Snowden, the NSA, and the U.S. Surveillance State Rating: 4 out of 5 stars4/5How to Be Invisible: Protect Your Home, Your Children, Your Assets, and Your Life Rating: 4 out of 5 stars4/5Podcasting For Dummies Rating: 4 out of 5 stars4/5Six Figure Blogging Blueprint Rating: 5 out of 5 stars5/5Coding For Dummies Rating: 5 out of 5 stars5/5An Ultimate Guide to Kali Linux for Beginners Rating: 3 out of 5 stars3/5The $1,000,000 Web Designer Guide: A Practical Guide for Wealth and Freedom as an Online Freelancer Rating: 4 out of 5 stars4/5Social Engineering: The Science of Human Hacking Rating: 3 out of 5 stars3/5Coding with AI For Dummies Rating: 1 out of 5 stars1/5The Hacker Crackdown: Law and Disorder on the Electronic Frontier Rating: 4 out of 5 stars4/5The Gothic Novel Collection Rating: 5 out of 5 stars5/5How to Disappear and Live Off the Grid: A CIA Insider's Guide Rating: 0 out of 5 stars0 ratingsEverybody Lies: Big Data, New Data, and What the Internet Can Tell Us About Who We Really Are Rating: 4 out of 5 stars4/5The Beginner's Affiliate Marketing Blueprint Rating: 4 out of 5 stars4/5Surveillance and Surveillance Detection: A CIA Insider's Guide Rating: 3 out of 5 stars3/5How To Start A Profitable Authority Blog In Under One Hour Rating: 5 out of 5 stars5/5Cybersecurity All-in-One For Dummies Rating: 0 out of 5 stars0 ratingsSix Figure Blogging In 3 Months Rating: 3 out of 5 stars3/5JavaScript All-in-One For Dummies Rating: 5 out of 5 stars5/5Grokking Algorithms: An illustrated guide for programmers and other curious people Rating: 4 out of 5 stars4/5WordPress For Dummies Rating: 0 out of 5 stars0 ratingsVlog Like a Boss: How to Kill It Online with Video Blogging Rating: 5 out of 5 stars5/5Tor and the Dark Art of Anonymity Rating: 5 out of 5 stars5/5Python: Learn Python in 24 Hours Rating: 4 out of 5 stars4/5
Reviews for FuelPHP Application Development Blueprints
0 ratings0 reviews
Book preview
FuelPHP Application Development Blueprints - Sébastien Drouyer
Table of Contents
FuelPHP Application Development Blueprints
Credits
About the Author
About the Reviewers
www.PacktPub.com
Support files, eBooks, discount offers, and more
Why subscribe?
Free access for Packt account holders
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Downloading the color images of this book
Errata
Piracy
Questions
1. Building Your First FuelPHP Application
About FuelPHP
Development process of a FuelPHP application
Installing the environment
Windows
Mac
Ubuntu
Recommended modules and extensions
Getting the FuelPHP framework
Installing FuelPHP 1.7.2
Downloading the appropriate ZIP file
Using Composer
Updating FuelPHP
Installation directory and apache configuration
The simplest way
By setting up a virtual host
FuelPHP basics
The FuelPHP file system hierarchy
The app directory
The packages
Class name, paths, and coding standard
MVC, HMVC, and how it works on FuelPHP
What is MVC?
How it works on FuelPHP
Actions and controllers
Views
Parameters
Routes
Presenters
What is HMVC?
The oil utility and the oil console
Building your first application
Database configuration
Scaffolding
Migrating
Using your application
Refining the application
Refining the monkey listing
Refining the monkey detailed view
Allowing an empty description
Checking whether the height is a float
Using a checkbox instead of an input for the still_here attribute
Setting custom routes
Removing useless routes and files
A few notes about deploying your application
Summary
2. Building a To-do List Application
Specifications
Conception
FuelPHP installation and configuration
Scaffolding
Routes configuration
The profiler
Models, relations, and the ORM
Differences between CRUD and ORM
The FuelPHP ORM
DB and ORM basics
Executing queries without the ORM
Creating new objects
Finding specific objects
Updating an object
Deleting an object
Loading several objects
Using method chaining
More complex requests
ORM relations
Defining relations inside the models
Testing the relations
Getting objects' relations
Updating objects' relations
Observers and events
Implementation of the to-do list
Allowing the user to see and change tasks' status
Allowing the user to add tasks
Allowing the user to change tasks' order
Axis of improvements
Summary
3. Building a Blog Application
Specifications
Conception
Preliminary steps
Scaffolding the posts
Migrating part 1
The administration panel
The Auth package
Creating the Blog module
Moving files to the Blog module
Improving the navigation bar
Scaffolding the rest of our project
Scaffolding categories
Generating files
Moving categories to the blog module
Migrating
Scaffolding comments
Scaffolding posts (front)
Refining the administration panel
Refining the posts administration panel
Improving the post creation and edition forms
Removing and automatically filling the slug
Changing the small description input to a textarea
Editing the post content using a WYSIWYG editor
Replacing the category input by a select box
Replacing the user_id field by author
Removing the View link
The posts' list
Removing the Slug, Small description and Content columns
Displaying the category and author names
Removing the view link
Refining the categories administration panel
Removing the View link
Adding the number of post's column
Solution 1: using count
Solution 2: using related
Solution 3: using DB::query
Refining the comments administration panel
Improving the comments listing
Removing the view and adding a new comment link
Removing the Email and Content columns
Replacing the Post id column by Post
Improving the comment edition form
Changing the Status input to a select box
Replacing Post id by Post
Removing the View link
Protecting your website against CSRF attacks
Protecting links
Protecting forms
Refining the front-end
Refining the posts' listing
Deleting useless features
Changing how the posts' listing is displayed
Adding pagination
Using posts' slug
Listing posts by categories
Adding indexes
Refining the posts' visualization webpage
Changing the post layout
Adding the comment form
Displaying comments
Notifying the author when a new comment is posted
Clearing rejected comments
Additional improvements
Summary
4. Creating and Using Packages
What are CAPTCHAs?
Preliminary steps
Generating the sample application
The reCAPTCHA solution
Installing the recaptcha package
Configuring the recaptcha package
Integrating the recaptcha package
Creating your own package
Conception
Generating the package
Generating the Captcha_Answer model
Migrating the package
Integrating the package into our application
Implementing the get_html method
Implementing the CAPTCHA verification method
Cleaning old captchas
Possible improvements
Summary
5. Building Your Own Restful API
Specifications
Conception
FuelPHP installation and configuration
The Parser package and template engines
A major benefit of language-agnostic template engines
Subscription and authentication features
Implementing the subscription and authentication forms
Handling the signup form
Handling the signin form
Allowing the user to sign out
Allowing the user to create and view posts
Generating the Post model
Allowing the user to create new posts
Implementing the user interface
Implementing the post creation action
Implementing the profile page
Configuring the routes
Creating the user model
Implementing the show action
Implementing views
Implementing the API
Implementing the base controller
Implementing your first hybrid action
Implementing mappers to control how the information is shared
Improving the listing
Giving JavaScript access to our Mustache views
Generating the templates.js file
The easy and dirty way
Using guard-templates
Integrating template.js and Mustache.js
Implementing the post/list action
Implementing the See more button
Redirecting the home page to the logged user's web page
Unit tests
Possible improvements
Summary
6. Building a Website Using Novius OS
About Novius OS
Getting Novius OS
Configuring Novius OS
Exploring Novius OS
The applications manager
The Novius OS desktop
Novius OS' front and the default homepage
The Webpages application
Novius OS templates
The App Desk
Inserting enhancers in your webpages
The Novius OS file system hierarchy
Applications folder structure
Files extensions
Configurations and classes
Creating an application
Installing the 'Build your app' wizard
Generating the application
Testing your generated application
Application basics
The metadata configuration file
The migration files
The App desk
The edition and creation forms
The front controller
More about Novius OS
Summary
Index
FuelPHP Application Development Blueprints
FuelPHP Application Development Blueprints
Copyright © 2015 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
First published: February 2015
Production reference: 1200215
Published by Packt Publishing Ltd.
Livery Place
35 Livery Street
Birmingham B3 2PB, UK.
ISBN 978-1-78398-540-1
www.packtpub.com
Credits
Author
Sébastien Drouyer
Reviewers
Ivan Đurđevac
Márk Sági-Kazár
Kenji Suzuki
Aravind Udayashankara
Commissioning Editor
Kartikey Pandey
Acquisition Editor
Nikhil Chinnari
Content Development Editor
Melita Lobo
Technical Editors
Sebastian Rodrigues
Mohita Vyas
Copy Editors
Pranjali Chury
Sameen Siddiqui
Ashwati Thampi
Project Coordinator
Kinjal Bari
Proofreaders
Simran Bhogal
Kevin McGowan
Linda Morris
Indexer
Tejal Soni
Graphics
Sheetal Aute
Disha Haria
Abhinash Sahu
Production Coordinator
Alwin Roy
Cover Work
Alwin Roy
About the Author
Sébastien Drouyer is a computer science research engineer from France. He has a master's degree in computer science from the National Institute of Applied Sciences of Lyon, one of the most prestigious engineering schools in France. He has been developing web applications since 2005 and has won various contests and awards from GitHub, NASA, and Intel. He has also been a member of the Novius OS core team (an open source content management system based on the FuelPHP framework) and published many additional open source projects. He has trained several teams on FuelPHP and is a conference speaker on the subject.
First of all, I would like to thank the FuelPHP core team and its community for improving this wonderful framework every day.
If there are only a countable number of errors in this book, then it is due to Aravind Udayashankara, Kenji Suzuki, Sági-Kazár Márk, Ivan Đurđevac, Craig Hooghiem, and John Alder who all did excellent reviews.
I would like to salute the amazing Novius OS core team and I wish them the best in their future endeavors.
I would also like to thank the Packt Publishing team, especially Melita Lobo, for their patience and professionalism.
Last, but not least, I would like to thank my very supportive family and friends. A special thanks to my mother and father for making me the person I am today; I wouldn't be here without you two.
About the Reviewers
Ivan Đurđevac is a PHP developer from Serbia, Pančevo. Long time ago, he found out the development
word with Delphi. Prior to 2000, the Web was a huge deal, and he decided to pick PHP as his main tool. He started with CodeIgniter as his first framework. After a while, he realized that CodeIgniter did not allow him to write beautiful code to solve problems with design patterns, and he saw it would stay that way, trapped in PHP4. So, he switched to Kohana and Zend Framework and it was a big step forward. FuelPHP was a new kid on the block. It took all the best features from others and created a modern framework. He used FuelPHP to build large-scale applications. At the time this book was written, he used Laravel as his codebase. No matter which framework he uses, clean code is always a priority for him. He will never stop learning from better developers and modern practices.
He has worked for various companies on many projects, such as e-learning platforms, CMS-ES, social network sites, and business applications. Currently, he is working for a USA-based company that builds various internet marketing tools, which collaborate with AWeber, Infusionsoft, and other tools. He is also interested in DevOps and likes to play with Linux administration and set up server boxes and maintain them.
Márk Sági-Kazár was previously working with CodeIgniter, and picked up FuelPHP in 2011. Since 2014, he has been actively developing for FuelPHP, starting with the E-mail package. From the autumn of 2014, he has been an official member of the FuelPHP team.
Mark started playing with programming at the age of 6. While in high school, he worked with several Microsoft languages; Visual Basic is one of them. After finishing high school, he switched to PHP as his programming language of choice. Starting with CodeIgniter, he quickly switched to FuelPHP and delivered his first production application (an e-commerce site) in 2012, followed by IndigoPHP in 2013, which is an application framework and CMS built on top of FuelPHP. Besides his work on FuelPHP V2, he's currently working on some good quality packages such as a SupervisorPHP (http://supervisorphp.com) and shopping cart abstraction, to name some.
Kenji Suzuki is a programmer and web developer living in Japan. He is a contributor to FuelPHP, BEAR.Sunday, CodeIgniter, and many other open source projects. He is a PHP expert, Certified PHP 5 Engineer Expert by the Engineer Certification Corporation for PHP (http://www.phpexam.jp/about/English/), and coauthor of the Japanese best-seller and highly-praised PHP recipe book, PHP gyakubiki reshipi, SHOEISHA.Co.,Ltd. He has published several books about PHP with famous Japanese IT book publishers. His latest book is Hajimeteno Framework toshiteno FuelPHP, Rutles, Inc. You can find the repositories of his various projects on GitHub at https://github.com/kenjis.
Aravind Udayashankara is an autodidactist and software engineer. He has been working on several open source server-side technologies, such as NodeJS, PHP, and Ruby, and browser-side technologies such as AJAX, JavaScript, XML, HTML, and many more since 2008. He loves and enjoys to learn, understand, and express complex things, as well as blog on his own website, http://aravindhu.com. He is now eagerly eyeing the world of mobile application development and big data.
www.PacktPub.com
Support files, eBooks, discount offers, and more
For support files and downloads related to your book, please visit www.PacktPub.com.
Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at
At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.
https://www2.packtpub.com/books/subscription/packtlib
Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can search, access, and read Packt's entire library of books.
Why subscribe?
Fully searchable across every book published by Packt
Copy and paste, print, and bookmark content
On demand and accessible via a web browser
Free access for Packt account holders
If you have an account with Packt at www.PacktPub.com, you can use this to access PacktLib today and view 9 entirely free books. Simply use your login credentials for immediate access.
Preface
The main idea behind FuelPHP Application Development Blueprints is to teach you FuelPHP's basic and advanced features by building various projects of increasing levels of complexity. It is very result-oriented; at the beginning of the chapters, we specify the application we want to build, and then we progressively implement it by learning how to use new FuelPHP features along the way. Our approach will therefore be very practical; a lot of concepts will be explained using code examples, or by integrating them directly into our projects. Thus, it is important to highlight that there will be a lot of code and you should be comfortable with reading and understanding PHP and HTML. As we will use them from time to time, having some knowledge about server/system administration and some foundation in JavaScript, jQuery, and CSS will be an added advantage.
Though this book is for intermediary to advanced web developers, any prior knowledge of the FuelPHP framework, or any other PHP framework, is not required. In order to understand this book, you don't have to know common concepts such as MVC, HMVC, or ORM. We take into account this shortcoming some of you might have, and important notions will be explained. We won't explain all of those in the first chapter though, as we want this to be as painless as possible; we will instead approach them when they become necessary for the project completion.
The ultimate purpose of FuelPHP Application Development Blueprints is to give you the ability to build any project using FuelPHP. By the end of this book, you certainly won't know every little detail of the framework, but you will hopefully have the necessary toolbox required to implement complex and maintainable projects.
What this book covers
Chapter 1, Building Your First FuelPHP Application, covers the very basics of the FuelPHP framework; how to install it, how to configure it, how it is organized, and its main components. Along the way, we will generate our first FuelPHP application using the oil utility and tweak some files, in order to illustrate how things work.
Chapter 2, Building a To-do List Application, focuses on FuelPHP's ORM and debugging features. We will illustrate these features using a lot of examples, and then implement a small to-do list application. We will also use some JavaScript and jQuery to send AJAX requests.
Chapter 3, Building a Blog Application, will teach you how to generate and tweak an administration interface easily, how to create your own modules and tasks, how to manage paginations easily, and how to use the Auth and Email packages. We will create a blog application implementing all these features.
Chapter 4, Creating and Using Packages, will approach the FuelPHP package system. This is a rather short chapter; we will first try to protect our website from spam bots by installing an existing package, and then create our own original solution by creating a new package.
Chapter 5, Building Your Own RESTful API, covers more advanced subjects such as building a JSON API, using language agnostic template engines, allowing user subscriptions, and implementing unit tests. To illustrate this, we will create a responsive micro blogging application featuring a public API.
Chapter 6, Building a Website Using Novius OS, will quickly introduce you to Novius OS, a FuelPHP-based Content Management System. Using such a system can greatly speed up the implementation of complex projects.
What you need for this book
The applications in this book are based on FuelPHP 1.7.2, which requires:
A web server: The most common solution is Apache
A PHP interpreter: The 5.3.3 version or greater
A database: we will use MySQL
FuelPHP works on Unix-like and Windows operating systems. The mod_rewrite Apache module and some additional PHP extensions are recommended; the complete list is available at http://fuelphp.com/docs/requirements.html.
Who this book is for
This book is for intermediary to seasoned web developers who want to learn how to use the FuelPHP framework and to build complex projects using it. You should be familiar with PHP, HTML, CSS, and JavaScript, but no prior knowledge about MVC frameworks is required.
Conventions
In this book, you will find a number of text styles that distinguish between different kinds of information. Here are some examples of these styles and an explanation of their meaning.
Code words in text, database table names, folder names, filenames, file extensions, pathnames, dummy URLs, user input, and Twitter handles are shown as follows: Remove APPPATH/classes/controller/welcome.php as we don't need this controller anymore.
A block of code is set as follows:
echo Form::checkbox(
'still_here',
1,
Input::post(
'still_here',
isset($monkey) ? $monkey->still_here : true
)
);
?>
New terms and important words are shown in bold. Words that you see on the screen, for example, in menus or dialog boxes, appear in the text like this: Click on the Generate button.
Note
Warnings or important notes appear in a box like this.
Tip
Tips and tricks appear like this.
Reader feedback
Feedback from our readers is always welcome. Let us know what you think about this book—what you liked or disliked. Reader feedback is important for us as it helps us develop titles that you will really get the most out of.
To send us general feedback, simply e-mail <[email protected]>, and mention the book's title in the subject of your message.
If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide at www.packtpub.com/authors.
Customer support
Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.
Downloading the example code
You can download the example code files from your account at http://www.packtpub.com for all the Packt Publishing books you have purchased. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly to you.
Downloading the color images of this book
We also provide you with a PDF file that has color images of the screenshots/diagrams used