2. What is Laravel?
PHP Framework for Web Artisans
Built on top of Symfony2 Components
Like any framework, provides services and libraries to make
interacting with web requests and other services
5. • Initial Release
• Languange
• Architecture
• License
: June 2011 (latest: 5.0.16 March 14, 2015)
: PHP (5.4+)
: MVC
: MIT
http://en.wikipedia.org/wiki/Laravel
Details
6. Where to start from?
Laravel is very flexible framework. There are at least 3
options how to create new project:
- via laravel installer
- via composer
- clone from github
7. Via Laravel installer
This will download laravel installer via composer
- composer global require "laravel/installer=~1.1"
When installer added this simple command will create app
- laravel new <app name>
* Do not forget to add ~/.composer/vendor/bin to your PATH variable in ~/.bashrc
8. Other options
Via composer
- composer create-project laravel/laravel your-project-name
Get from GitHub
- https://github.com/laravel/laravel
- And then in the project dir run “composer install” to get all needed
packages
9. Laravel and Composer
Using composer in Laravel you can
- Add/remove/update packages
- Dump autoload file and generate new one
- Update laravel version
16. Laravel directory structure
The app directory, as you might expect, contains the core code of your application.
The config directory, as the name implies, contains all of your application's configuration files.
The database folder contains your database migration and seeds.
The public directory contains the front controller and your assets (images, JavaScript, CSS, etc.).
The app/storage directory contains compiled Blade templates, file based sessions, file caches, and
other files generated by the framework.
The tests directory contains your automated tests.
The vendor directory contains your Composer dependencies.
The app/model directory contains your model
The app/http/controllers directory contains your model
...
17. Magic Artisan
- Is located in Laravel project root directory
- Basically is a php script which performs all actions in
Laravel for example:
- Manage migrations
- Check application routes
- tinker
- Create Artisan commands
- Run database seeds
Full list is available with “php artisan list”
19. Artisan commands
Artisan commands usually are some scripts launched from
command line or with cron. For example you need to have
daily export of your orders - write a command and run it
with cron.
- They accept options and
arguments
- Have pretty output if
needed
- Interactive (can ask
password/question)
20. Laravel Environmental Configuration
After installing Laravel and setting up project, the first thing we need to do
is Generating Application key ( php artisan key:generate )
Laravel provides facility to run your application in different environment like
testing, production,etc.
You can configure the environment of your application in the .env file of the
root directory of your application.
If you have installed Laravel using composer, this file will automatically be
created.otherwise, you can simply rename the .env.example file to .env file
21. Environmental Configuration (Continue)
This is a sample .env
file
you can both keep
configuration/environ
ment variables in .env
or in a config/ file
Next we’ll see how to
keep config in config/
file
22. Laravel Config
Laravel uses config files with arrays in it to
store different configurations. database.php ->
Location: /config
To get config value simply follow dot notation
Config::get(‘<filename>.key1.key2.key3’);
Can also pass default value on not found
Config::get(‘key’, 123);
23. Laravel actively uses php namespaces to keep classnames
short and possibility to use same class names for different
components.
For example all Admin functionality under Admin
namespace.
Laravel and namespaces
24. So Laravel is MVC framework meaning
we have folder for controllers, views and
models by default, no need to create
them.
Guess there’s no need to explain MVC
pattern.
Laravel MVC
61. There’s one main Controller class which
all controllers should extend.
By default Laravel has BaseController
(extends from Controller) and
HomeController (extends from
BaseController)
Laravel controllers
77. Laravel migrations
Interaction with migrations is
happening through artisan commands.
Each migration has two functions up and down
to migrate and rollback
80. DB seeds
Seeds are used to insert predefined data in
tables so there is something to start from for
example on development environment we can
create test users, test products and so on.
82. Models (Eloquents)
Models are located
under app/ directory.
Simple Product
model.
Will use ‘products’ table
83. Laravel ORM
Why is it good?
- Has a lot of useful methods
- Is very flexible
- Has built in safe delete functionality
- Has built in Relationship functionality
- Has option to define scopes
84. Laravel ORM
- Models can have relations defined in
them for easier access to properties.
- $product->category in this case will
return Category model object where
this product belongs. How?
Laravel assumes you have category_id
in your products table, so when you call
$product->category query SELECT *
FROM ‘categories’ where id = ‘?’ is
performed. Of course you can define
different relation fields
85. Laravel ORM
Cool methods:
// Retrieve the user by the attributes, or create it if it doesn't exist...
$user = User::firstOrCreate(array('name' => 'John'));
// Retrieve the user by the attributes, or instantiate a new instance...
$user = User::firstOrNew(array('name' => 'John'));
Basically Laravels ORM has function for anything