All Projects → jabranr → lassi

jabranr / lassi

Licence: MIT license
PHP boilerplate for quick start projects using Slim Framework and Eloquent.

Programming Languages

PHP
23972 projects - #3 most used programming language
CSS
56736 projects
ApacheConf
554 projects

Projects that are alternatives of or similar to lassi

Slim
Slim is a PHP micro framework that helps you quickly write simple yet powerful web applications and APIs.
Stars: ✭ 11,171 (+19160.34%)
Mutual labels:  slim-framework
slim-skeleton
Slim Framework skeleton application following MVC construction
Stars: ✭ 18 (-68.97%)
Mutual labels:  slim-framework
Slim4-Skeleton
Web application skeleton that uses the Slim4 Framework, PHP-DI, Nyholm PSR7 and Twig.
Stars: ✭ 40 (-31.03%)
Mutual labels:  slim-framework
sihae
A PHP 7.4+ blog engine built with Slim Framework and Doctrine ORM
Stars: ✭ 18 (-68.97%)
Mutual labels:  slim-framework
slim-boilerplate
A simple Slim Framework based website boilerplate, pre-configured with commonly used components.
Stars: ✭ 17 (-70.69%)
Mutual labels:  slim-framework
slim-doctrine
Slim-Doctrine managers integration
Stars: ✭ 16 (-72.41%)
Mutual labels:  slim-framework
slim-skeleton
A Slim 3 skeleton project to easily bootstrap MVC applications using Slim Framework 3
Stars: ✭ 14 (-75.86%)
Mutual labels:  slim-framework
REST-Api-with-Slim-PHP
REST API with PHP Slim Framework 3 and MySQL
Stars: ✭ 69 (+18.97%)
Mutual labels:  slim-framework
slim-3-authentication
A Slim 3 authentication system.
Stars: ✭ 44 (-24.14%)
Mutual labels:  slim-framework
localization-middleware
PSR-15 middleware to assist primarily with language-based content negotiation and various other localization tasks
Stars: ✭ 24 (-58.62%)
Mutual labels:  slim-framework
wordpress-eloquent
A library that converts converts wordpress tables into Laravel Eloquent Models.
Stars: ✭ 129 (+122.41%)
Mutual labels:  slim-framework
phpboilerplate
PHP boilerplate with composer psr-4, phpunit and travis-ci.
Stars: ✭ 15 (-74.14%)
Mutual labels:  php-boilerplate
api rest slim framework
RESTFUL API o API REST con slim framework (PHP, MySql, PDO)
Stars: ✭ 14 (-75.86%)
Mutual labels:  slim-framework
slim3-mvc
Slim 3 PHP micro framework MVC application boilerplate
Stars: ✭ 24 (-58.62%)
Mutual labels:  slim-framework
slim-mobile-detect
Implements Mobile-Detect lib for Response's write on Slim Framework App
Stars: ✭ 18 (-68.97%)
Mutual labels:  slim-framework
phpindonesia.or.id-membership2
PHP Indonesia - Membership Application - Reloaded
Stars: ✭ 31 (-46.55%)
Mutual labels:  slim-framework
slim-boilerplate
A PHP boilerplate,for a fast API prototyping based on Slim Framework, for start projects with Eloquent ORM, Validation, Auth (JWT), Repositories and Transformers ready
Stars: ✭ 58 (+0%)
Mutual labels:  php-boilerplate
Slim-Config
A file configuration loader that supports PHP, INI, XML, JSON, and YML files for the Slim Framework. It internally uses https://github.com/hassankhan/config.
Stars: ✭ 28 (-51.72%)
Mutual labels:  slim-framework
Slim-Console
Slim Framework Console
Stars: ✭ 26 (-55.17%)
Mutual labels:  slim-framework
phpPgAdmin6
PHP7+ Based administration tool for PostgreSQL 9.3+
Stars: ✭ 45 (-22.41%)
Mutual labels:  slim-framework

Lassi Build Status

PHP boilerplate for quick projects using Slim Framework and Eloquent database.

Lassi

Lassi is a small PHP boilerplate to use Slim Framework with Eloquent database components – enabling you to quickly start building your PHP projects with an MVC design pattern and datastore in no time.

Warnning: Project is in alpha status. For more see issues tracker.

Installation and Setup

Install with composer create-project command. This will install Lassi and all of it's dependencies i.e. Slim Framework and Eloquent database.

$ composer create-project jabranr/lassi

Configuration

Lassi uses .env files to setup it's configuration. There is such sample file .sample.env packaged with it. Lassi will look for .dev.env, .dist.env or .env respectively at the run time or throws NotFoundException.

Charset & Collation

By default .sample.env file has charset and collation configurations set to UTF-8 mb4 to support various type of characters encoding. You can update it with your own choice, of course. For more on best encoding practices, read Working with UTF-8 at PHP: The Right Way.

Routing

Use the routes.php in root directory to setup routes. You would setup routes as you do in Slim Framework. Afterall it is using Slim Framework in background. For more on setting up routes, see Slim Framework Documentation.

Structure

Controllers: The Controllers are to be saved in controller/ directory. All Controllers must extend Lassi\App\Controller base controller class and pass the LassiLassi instance to its constructor using LassiLassi::getInstance() method. You can also add relevant Model(s) using useModel(string|array $model) method. You can name the controller as you like but do keep up with best practices.

Models: All relevant Models are saved in model/ directory and must extend the Illuminate\Database\Eloquent\Model class. You would use models as you do in Eloquent. For more on setting up models and use other options, see Eloquent database quick start guide.

There is an example controller and model in mentioned directories for you to get started with.

Views: All views/templates are saved in view/ directory.

Assets: All assets are saved in public/ directory.

Example:

Create project

Create a project using Composer create-project command and cd into project directory.

$ composer create-project jabranr/lassi
$ cd path/to/lassi

Update configuration

Update configurations as required in .dev.env file.

Start server

Start the PHP built-in server and navigate browser to http://localhost:8000.

$ php -S localhost:8000 -t public

Setup routes

  • Add hello route

Add a new route hello in routes.php and try it in browser by navigating to http://localhost:8000/hello

$app->get('/hello', function() use ($app) {
	$app->response->write('Hello World');
});
  • Add goodbye route

Add a new route goodbye in routes.php to render a template. Create a new file goodbye.php with basic HTML and save in /view directory.

<!DOCTYPE html>
<html>
	<head>
		<title>Lassi goodbye template</title>
	</head>
	<body>
		<h1>Goodbye!</h1>
	</body>
</html>

Call this template to render directly from a route's definition or by using a Controller.

Directly from a route's definition

$app->get('/goodbye', function() use ($app) {
	return $app->render('goodbye.php');
});

Using a controller

Add a new public method goodbye() to WelcomeController.php in /controller directory.

class WelcomeController extends Lassi\App\Controller {
	...

	public function goodbye() {
		return $this->app->render('goodbye.php');
	}
}

Modify the route's definition to use controller.

$app->get('/goodbye', 'Lassi\Controller\WelcomeController:goodbye');

For complete reference, see Slim Framework documentation

Using Eloquent

To setup any database connection fill in the required information in relevant *.env file.

Setup SQLite database

At minimum it requires an absolute URL to SQLite file and db_driver value set to sqlite.

db_driver	 = sqlite				(Required)
db_name		 = path/to/foo.sqlite	(Required)
db_prefix	 = lassi_				(Optional)

Setup MySQL, SQL, MSSQL or Sybase database

db_driver	 = mysql		(Required)
db_host		 = localhost	(Required)
db_name		 = lassi		(Required)
db_username	 = root			(Required)
db_password	 = p@ssword		(Required)
db_prefix	 = lassi_		(Optional)

Using Eloquent is straight forward after a connection is established. To learn more on how to use Eloquent, see Official Eloquent Documentation.

Create a table using Eloquent

You can use the Illuminate\Database\Capsule\Manager::schema() method to setup database migrations. Here is an example to create a lassi_users table.

class WelcomeController extends Lassi\App\Controller {
	...

	public function makeUserTable() {
		Illuminate\Database\Capsule\Manager::schema()->create('users', function($table) {
			$table->increments('id');
			$table->string('name');
			$table->string('email')->unique();
			$table->timestamps();
		});
	}
}

Calling Lassi\Controller\WelcomeController->makeUserTable() will create a new table in database.

A model can be added to a controller using useModel() method in controller's constructor i.e.

class WelcomeController extends Lassi\App\Controller {
	public function __construct() {
		parent::__construct(LassiLassi::getInstance());
		$this->useModel('user');
	}
}

or it can directly be accessed using Lassi\Model namespace i.e.

class WelcomeController extends Lassi\App\Controller {
	...

	public function create() {
		$user = new Lassi\Model\User;
		$user->name = 'Jabran Rafique';
		$user->email = '[email protected]';
		$user->save();
	}
}

Getting info from Eloquent and pass it to template.

class WelcomeController extends Lassi\App\Controller {
	...

	public function goodbye() {
		$user = Lassi\Model\User::find(1);
		return $this->app->render('goodbye.php', array('user' => $user));
	}
}

Issue tracking

Please report any issues to repository issue tracker.

Contribution

I would love to get some help and extend this boilerplate further so it can be useful to a vast audience. If you think you can improve the boilerplate then fork the project and submit pull request at your convenience.

License

MIT License © 2015 – 2016 Jabran Rafique (@jabranr) | Contributors

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].