Skip to content

im286er/slimore

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Slimore

The fully (H)MVC framework based on the Slim PHP Framwork v2.6.x .

Install

Require php >=5.4.0 .

composer.json :

{
	"require" : {
		"slimore/slimore" : "*"
	}
}

Install :

$ composer install

Directory structure

Single module :

/
	app/
		controllers/
		models/
		views/
	configs/
		routes.php
		settigns.php
	public/
		.htaccess
		index.php
	vendor/
		...
	composer.json

Multi modules :

/
	app/
		frontend/
			controllers/
			models/
			views/
		backend/
			controllers/
			models/
			views/
		api/
			controllers/
			models/
			views/
		...
	configs/
		routes.php
		settings.php
	public/
		.htaccess
		index.php
	vendor/
		...
	composer.json

Usige

.htaccess :

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]

index.php :

<?php

define('APP_PATH',  realpath(__DIR__ . '/../app') . DIRECTORY_SEPARATOR);
define('BASE_URL',  str_replace('index.php', '', $_SERVER['PHP_SELF']));

require __DIR__ . '/../vendor/autoload.php';

$app = new \Slimore\Mvc\Application([
    'debug'           => true,
	'path'            => APP_PATH,
	'baseURL'         => BASE_URL,
	//'modules'       => ['home', 'admin', 'api'], // Multi-Modules
	//'defaultModule' => 'home',
    'autoloads'     => [
        APP_PATH . 'path/xx/xx'
    ]
]);

//$app->dbConnection(); // if using database

$app->get("/", function() {
    echo "Hello world!";
});

// Routes

//$app->get('/news', 'NewsController:read');
// or $app->get('/news', controller('index', 'read'));

//$app->get('/news', 'Home\Controllers\NewsController:read');
// or $app->get('/news', controller('news', 'read', 'Home\Controllers\\'));

//$app->post('/news', 'Home\Controllers\NewsController:create');
//$app->put('/news/:id', 'Home\Controllers\NewsController:update');
//$app->delete('/news/:id', 'Home\Controllers\NewsController:delete');

// or
/*
$app->moduleNamespace('Home\Controllers\\', function($namespace, $app) {
    //echo $namespace;

    $ctl = 'IndexController';

    //$app->get('/', $namespace . $ctl . ':index');
    //$app->get('/news/:id', $namespace . $ctl . ':index');

    $app->controller('index', function($controller, $app, $namespace) {

         //echo $controller . ', ' . $namespace;
        //$app->get('/news/:id', $namespace . $controller . ':index');

    }, $namespace);
});*/

// Auto routes => /:action, /:controller/:action, /:module/:controller/:action
$app->autoRoute();

$app->run();

Model :

<?php

class Article extends \Slimore\Mvc\Model
{
	//protected  $table      = 'you_table_name';
	//protected  $primaryKey = 'your_id';
}

Using Eloquent ORM / Model : http://laravel.com/docs/5.0/eloquent

View :

<?php
// using php statement
?>
<title><?=$title?></title>
<?=$var?>
<?php if ($exp) : ?>
<?php else : ?>
<?php endif; ?>

Controller :

<?php

// Multi-module
//namesapce Frontend\Controllers;

use \Slimore\Database\Manager as DB;

class IndexController extends \Slimore\Mvc\Controller
{
    public function index()
    {
		// Using model, same Laravel
		$article = Article::find(1);

		// query builder
        $news = $this->db->table('news')
						 ->select(['nid', 'cid', 'title', 'content', 'add_time'])
						 ->where(['cid' => 0])
						 ->orderBy('nid', 'DESC')
						 ->get();
        //print_r($news);

		// Basic database usage, same Laravel
		$results = DB::select('select * from users where id = ?', [1]);

		// Slim application methods
		// request
		$get = $this->request->get();

		// response
		//$this->response->headers->set('Content-Type', 'application/json');

		// view
		$this->view->setData(array(
            'color' => 'red',
            'size' => 'medium'
        ));

		 // render views/index.php
		$this->render('index', [
			'title'   => 'Hello world!' . $article->title,
			'article' => $article
		]);

		// output json
		/*$this->json([
			'status' => 200,
			'message' => 'xxxxxx',
			'data' => $article
		]);*/
    }
}

Using Slim : http://docs.slimframework.com/

Dependents

Components

  • Captcha
  • Debug\Simpler
  • Functions
  • FileCache
  • Http\Client
  • Image\Gd
  • Log\Writer
  • Pagination
  • Uploader
  • ...

Changes

Change logs

License

The MIT License.

Copyright (c) 2015 Pandao

About

The fully (H)MVC framework based on the Slim PHP Framwork .

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%