PHP Classes

How to Simplify the Development of Applications Based on PHP MVC Frameworks Phpnopea: Simplified MVC Web application framework

Recommend this page to a friend!
  Info   Example   Screenshots   View files Files   Install with Composer Install with Composer   Download Download   Reputation   Support forum   Blog    
Last Updated Ratings Unique User Downloads Download Rankings
2024-09-27 (1 month ago) RSS 2.0 feedNot enough user ratingsTotal: 46 This week: 1All time: 10,785 This week: 57Up
Version License PHP version Categories
phpnopea 1.0MIT/X Consortium ...7Libraries, Design Patterns, PHP 7
Description 

Author

This package provides a simplified MVC Web application framework.

It provides a small set of classes to help implement PHP Web applications based on the Model-View-Controller design pattern.

Currently, it provides:

- Route requests based on URL patterns

- Model classes that store objects in databases using PDO

- Generate view output with templates based on an optimized version of the Blade template engine

- Abstract the access to request and response details

- Etc...

Picture of Joshy Francis
  Performance   Level  
Name: Joshy Francis <contact>
Classes: 2 packages by
Country: United States United States
Age: ???
All time rank: 3529467 in United States United States
Week rank: 69 Up10 in United States United States Up

Example

<?php

/*
Route::group(['middleware' => ['admin']], function () {
    Route::get('admin/dashboard', ['as'=>'admin.dashboard','uses'=>'AdminController@dashboard']);

    Route::get('admin/test', function () {
        return 'Admin Page';
        $user = auth()->user();
        dd($user);
        
    });
   
});
Route::post('forget_password', ['as'=>'user2.auth_forgot','uses'=>'User2LoginController@forget_password']);
Route::resource('password_reset', 'password_reset\password_resetController');
*/
   
include_once(app_path().'/Http/Controllers/Common/helper.php');
/*
Route::get('/', function (Request $request) {
   
    
    var_dump($request->getHost());
   
    
    echo "url is " , url()->current() , "\n";
    var_dump($request->url());
    var_dump($request->root());
    //var_dump($_SERVER);
    //var_dump($request);
  return <<<HTML
  <h1>Hello world</h1>
HTML;

});
*/
//return ;
//optional/arg2/asd/1/2
Route::get('optional/arg2/{name?}/{id?}/{c?}', function ($name = null,$id = null,$c = null) {
   
var_dump($name);
   
var_dump($id);
   
var_dump($c);
    echo
'<br>';
    return
'optional'. $name;
});
$optional2=function ($name = null,$id = null,$c = null) {
   
var_dump($name);
   
var_dump($id);
   
var_dump($c);
    echo
'<br>';
    return
'optiona2'. $name;
};
//optional2/arg2/asd/1/2
Route::get('optional2/arg2/',$optional2);
Route::get('optional2/arg2/{name}',$optional2);
Route::get('optional2/arg2/{name}/{id}',$optional2);
Route::get('optional2/arg2/{name}/{id}/{c}',$optional2);


Route::get('/routes', function ( Request $request ){
    
var_dump($request->url());
    return
'routes';
});
Route::get('/routes/index', function ( Request $request ){
    
var_dump($request->url());
    return
'routes/index';
});
Route::get('/routes/create', function ( Request $request ){
    
var_dump($request->url());
    return
'routes/create';
});
Route::get('/routes/{id}', function ($id1, Request $request ){
   
var_dump($id1);
    
var_dump($request->url());
    return
'routes/1';
});
Route::get('/routes/{id}/edit', function ($id1, Request $request ){
   
var_dump($id1);
    
var_dump($request->url());
    return
'routes/1/edit';
});
//routes/1/test/3/test2/2
Route::get('/routes/{id1}/test/{id3}/test2/{id2}', function ($id1,$id2,Request $request,$id3){///routes/1/test/3/test2/2
   
var_dump($id1);
   
var_dump($id2);
   
var_dump($id3);
   
//var_dump($request->url());
    //var_dump($request->session->getId() );
    //var_dump($request->session->token() );
    //var_dump($request->session->get('asd',null) );
    //var_dump($request->session->get('arr',null) );
   
    //return 'ok';
   
$request->session->save( );
   
//View::share('shared_data', 'share data on the fly');
   
$view = View::make('home',['test'=>$request->url(),'arr'=>[1,2,3,4] ]);
    return
$view->render();
});


//return ;

//admin/news
Route::group(['namespace' => 'Admin','middleware'=>['demo','web']], function(){
   
Route::get('admin/news', [ 'uses' => 'NewsController@index' ]);

   
Route::get('admin/users', [ 'uses' => 'UserController@index' ]);

});


Route::match(['get', 'post'], '/match', function(Request $request){
   
$url=$request->url();
    if(
$request->getrequestMethod()=='POST'){
       
var_dump($request->field1);
        return
'Match post<br/><a href="'.$url .'" >Back</a>';
    }else{
       
          return
"
            <form action=\"
$url\" method=\"POST\" >
                <input type=\"hidden\" name=\"field1\" value=\"form_data\" /><br/>
                Match get
                <input type=\"button\" onclick=\"document.forms[0].submit();\" value=\"submit\" />
           </form>
        "
;
    }
});
Route::any('/any', function(Request $request){
       
$url=$request->url();
    if(
$request->getrequestMethod()=='POST'){
       
var_dump($request->field1);
        return
'Any post<br/><a href="'.$url.'" >Back</a>';
    }else{

          return
"
            <form action=\"
$url\" method=\"POST\" >
                <input type=\"hidden\" name=\"field1\" value=\"form_data\" /><br/>
                Any get
                <input type=\"button\" onclick=\"document.forms[0].submit();\" value=\"submit\" />
           </form>
        "
;
    }
});
Route::get('/delete', function(Request $request){
       
$url=$request->url();
      return
"
        <form action=\"
$url\" method=\"POST\" >
            <input type=\"hidden\" name=\"_method\" value=\"DELETE\">
            <input type=\"hidden\" name=\"field1\" value=\"form_data\" /><br/>
            Delete
            <input type=\"button\" onclick=\"document.forms[0].submit();\" value=\"submit\" />
       </form>
    "
;
});
Route::delete( '/delete', function(Request $request){
   
var_dump($request->field1);
   
$url=$request->url();
        return
'Deleted<br/><a href="'.$url.'" >Back</a>';
});
//books/shelf/1
//books/shelf/store/1
//books/store/1
Route::group(['prefix' => 'books'], function () {
   
Route::group(['prefix' => 'shelf'], function () {
       
// First Route
       
Route::get('/1', function () {
            return
'Books/Shelf/1';
        });
       
Route::group(['prefix' => 'store'], function () {
           
// First Route
           
Route::get('/1', function () {
                return
'Books/Shelf/Store/1';
            });
        });
    });
   
// Second Route
   
Route::get('/1', function () {
        return
'Books 1';
    });
   
Route::group(['prefix' => 'store'], function () {
       
// Third Route
       
Route::get('/1', function () {
            return
'Books/store/1';
        });
    });
});
//files/1
Route::get('/files/{id}', function ($id) {
   
   
var_dump($id);
   
//var_dump( asset('storage/file.txt'));
   
   
Storage::disk('local')->put('file.txt', 'Contents');
   
Storage::put('files/file.txt', 'File Contents');
   
$contents = Storage::get('files/file.txt');
   
//$url = Storage::temporaryUrl( 'files/file.txt', now()->addMinutes(5) );
   
    //$path = $request->file('avatar')->store('avatars');
    //$path = Storage::putFile('avatars', $request->file('avatar'));
   
Storage::delete('files/file.txt');
   
//$path = Storage::putFileAs( 'avatars', $request->file('avatar'), $request->user()->id );

   
return $contents.':'.$id;
    return
$id;
});
//files2/1?head=test
Route::get('/files2/{id}', function (Request $request,$id) {
   
var_dump($request->input('head'));
   
var_dump($request->url());
    
    return
$id;
});


Route::get('/data', function (Request $request ) {
$url=$request->url();
  return
"
      <form action=\"
$url?route=fileupload\" enctype=\"multipart/form-data\" method=\"POST\" >
        <input type=\"hidden\" name=\"field1\" value=\"form_data\" /><br />
        <input multiple name=\"userfile[]\" type=\"file\" /><br />
            <script type=\"text/javascript\">
               // alert(document.forms[0]['field1'].value);
            </script>
           
        <input type=\"button\" onclick=\"document.forms[0].submit();\" value=\"submit\" />
   </form>
"
;
});
Route::post('/data', function (Request $request ) {
 
//return json_encode($request);
  //return $request->input('a');
  //var_dump($_FILES);
          
       
if($request->hasFile('userfile')) {
           
$doc=$request->file('userfile') ;
                
var_dump($doc);
            if(!
is_array($doc)){
               
//$filename= $doc->getClientOriginalExtension();
               
$filename=$doc->getClientOriginalName() ;
               
var_dump($filename);
               
//$doc->move(__DIR__ . '/../storage/app/public',$filename);
                //$path = Storage::putFileAs('avatars', $doc ,$filename );
               
$filename=uniqid().'.'.$file->getClientOriginalExtension() ;
               
//$path = Storage::putFileAs( $doc ,$filename );
               
$newfilename = $doc->store( );
               
//var_dump($newfilename);
           
}else{
                foreach(
$doc as $file){
                   
$filename=$file->getClientOriginalName() ;
                   
var_dump($filename);
                   
//$file->move(__DIR__ . '/../storage/app/public',$filename);
                    //$path = Storage::putFileAs('avatars', $file ,$filename );
                   
$filename=uniqid().'.'.$file->getClientOriginalExtension() ;
                   
//$path = Storage::putFileAs( $file ,$filename );
                    //$newfilename = $file->store( );
                    //$newfilename = $file->store('docs' );
                   
$newfilename = $file->store('docs', 'public' );//path,disk
                   
Storage::move($newfilename, 'docs/moved_'.uniqid().'.'.$file->getClientOriginalExtension());
                   
var_dump($newfilename);
                }
            }
        }
 
// var_dump($request->files);
 
return count($request->files);
 
});
Route::get('photo', function (Request $request ) {
   
//Storage::delete('avatars/logo.png' );
   
$Photo=Storage::get('logo.png' );
   
//var_dump($Photo);
    //header('Content-Type: image/jpeg');
    //return $Photo;
            //$contents = Storage::get('logo.png');
            //$affected = DB::update('update employee set signature=? where EmpId = ?', [$contents, 5]);
           
        //$employee = DB::select('select signature from employee where EmpId = ?',[5 ]);
        // if($employee && count($employee)>0){
            // $Photo=$employee[0]->signature;
        // }
       
if(!isset($Photo)){
           
//url('/').'/assets/No_Image_200x150.png';
            //storage_path().
           
$Photo=file_get_contents(public_path().'/assets/No_Image_200x150.png');
        }
    return
response($Photo)->withHeaders([
       
'Content-Type' => 'image/jpeg',
    ]);
});

   
Route::post('logout', function (Request $request ) {
       
auth()->logout();
        
        return
redirect('home');
    });

View::share('shared_data', 'shared accross all views');
Route::pattern('id', '[0-9]+');// Only called if {id} is numeric.

//Route::resource('rc/resource', 'ResourceController');
//Route::any('API/rc/resource', 'ResourceController@API');
Route::get('/home', 'HomeController@index') ;

Route::get('send_error_report', function (Request $request) {
   
var_dump($request->input('error_file'));
   
//var_dump($request);
});
   
// Registration Routes...
   
Route::get('/register', 'Auth\\RegisterController@showRegistrationForm') ;
   
Route::post('/register', 'Auth\\RegisterController@register') ;

   
// Authentication Routes...
   
Route::get('/login', 'Auth\\LoginController@index') ;
   
Route::post('/login', 'Auth\\LoginController@login') ;
   
//validatortest/create
   
Route::get('validatortest/create', 'ValidatorTestController@create');
   
Route::post('validatortest', 'ValidatorTestController@store');
    
   
//Route::get('/home', 'HomeController@index') ;
    //rc/resource/123/asd/m
   
Route::resource('rc/resource', 'ResourceController',['parameters' => [ "extra" => 'template_1' ]]);
   
Route::any('API/rc/resource', 'ResourceController@API');
   
Route::get('rc/resource/{id}/{id2}/m', 'ResourceController@method_test');

Route::group(['middleware' => ['web']], function ( ) {
   
   
Route::get('/test1', function ( Request $request ) {
        
//return 'middleware_web_ok' ;
        
return view('home',['test'=>$request->url(),'arr'=>[1,2,3,4] ]);
    });
   
Route::group(['middleware' => ['admin']], function ( ) {
       
Route::get('/test2', function ( Request $request ) {
           
//var_dump($middleware1);
            //var_dump($middleware2);
           
return 'middleware_web_admin_ok' ;
        });
    });
   
Route::group(['middleware' => ['user']], function ( ) {
       
Route::get('/test3', function ( Request $request ) {
           
//var_dump($middleware1);
            //var_dump($middleware2);
           
return 'middleware_web_user_ok' ;
        });
       
Route::group(['middleware' => ['demo']], function ( ) {
           
Route::get('/test4', function ( Request $request ) {
               
//var_dump($middleware1);
                //var_dump($middleware3);
               
return 'middleware_web_user_demo_ok' ;
            });
        });
    });
   
Route::get('/test5', function ( Request $request ) {
       
//var_dump($middleware1);
       
return 'middleware_web_ok' ;
    });
});


/*
                    Subdomain Routing
       
        http://www.w3programmers.com/laravel-route-groups/
       
file: C:\Windows\System32\Drivers\etc\hosts
    127.0.0.1 fakebook.dev
    127.0.0.1 asd.fakebook.dev
    127.0.0.1 qwe.fakebook.dev
    ::1 localhost
File Path : /apache/conf/extra/httpd-vhosts.conf or httpd.conf
 
<VirtualHost *:80>
DocumentRoot "C:\xampp\htdocs\laranopea\public"
ServerName fakebook.dev
<directory "C:\xampp\htdocs\laranopea\public">
    Options Indexes FollowSymLinks
    AllowOverride all
    Order Deny,Allow
    Deny from all
    Allow from all
</directory>
</VirtualHost>

*/

Route::group(['domain' => 'fakebook.dev'], function(){
   
Route::any('/', function(){
        return
'My own domain';
    });
});

Route::group(['domain' => '{username}.fakebook.dev'], function(){
   
Route::any('/', function($username){
        return
'You visit your account: '. $username;
    });
   
$data_user = [
       
'asd' => [
          
'profile' => ' a cute programmer. ',
          
'status' => [ 'I\'m cool!', 'I\'m cool very Cool!', 'Fantastic!']
         ],
       
'qwe' => [
          
'profile' => 'a boss programmer.' ,
          
'status' => [ 'Sweet!', 'Today is incredible!', 'Nice ..']
         ]
    ];
   
Route :: get ( 'profile', function ($username) use ($data_user){
            return
$username." is a ".$data_user[$username] [ 'profile'];
    });
   
Route :: get ('status', function ($username ) {
        return
$username. ' selected no status: ' ;
    });
   
Route :: get ('status/{id}', function ($username, $id) use ($data_user){
        return
$username. ' writes: '. $data_user [$username] ['status'] [$id];
    });
});


//return;

Route::get('/', function (Request $request) {
   
    return
redirect('home');
   
var_dump($request->getHost());
   
   
//var_dump(debug_backtrace());
   
echo "<pre>";
       
//debug_print_backtrace();
        // print backtrace, getting rid of repeated absolute path on each file
       
$e = new Exception();
       
//echo $e->getTraceAsString() ;
        //print_r(str_replace('/path/to/code/', '', $e->getTraceAsString()));
        //var_dump($e->getTraceAsString());
       
       
function debug_backtrace_string() {
           
$stack = '';
           
$i = 1;
           
$trace = debug_backtrace();
            unset(
$trace[0]); //Remove call to this function from stack trace
           
foreach($trace as $node) {
               
/*
                if(isset($node['file'])) {
                    $stack .= "#$i ". $node['file'] ."(" .$node['line']."): ";
                }
                if(isset($node['class'])) {
                    $stack .= $node['class'] . "->";
                }
                $stack .= $node['function'] . "()" . PHP_EOL;
                */
               
$stack .="#$i " ;
                foreach(
$node as $k=>$v){
                    if(!
is_array($v) && !is_object($v)){
                       
$stack .= $k . "=" .$v. "\t";
                    }
                }
               
$stack .= PHP_EOL;
               
$i++;
            }
            return
$stack;
        }
        echo
debug_backtrace_string();
       
    echo
"</pre>";
    echo
"url is " , url()->current() , "\n";
   
var_dump($request->url());
   
var_dump($request->root());
   
var_dump($_SERVER);
   
var_dump($request);
  return <<<HTML
<h1>Hello world</h1>
HTML;
});

//return ;

for($i=0;$i<10000;$i++){//10000
    //route9999/321/test/123/test2/qwe
   
Route::get('/route'.$i .'/{id}/test/{id3}/test2/{id2}', function ($id,Request $request ) use($i) {
        return
$i .':' . $id;
    });
}


Details

<p align="center"><img src="phpnopea.svg"></p>

<p align="center"> <a href="https://github.com/JoshyFrancis/phpnopea"><img src="https://img.shields.io/github/downloads/JoshyFrancis/phpnopea/total.svg" alt="Total Downloads"></a> <img src="MIT.svg" alt="License"> </p>

About Phpnopea

Phpnopea is an alternative to laravel and excels in performance. It is based and built on same laravel principles. In our company, I was requested to speed up laravel and I came up with this.

Based on Laravel version 5.4.23

Features

  • Classes are minimal and optimized but all the necessary functions incorporated.
  • Blade template have been optimized to skip empty lines, comments(php,js,css) etc.(Only multiline comments allowed for single line php code eg:<?php /echo $share_otf;/ ?>) It helps dramatic reduction in file size as well as the bandwidth usage.
  • Only 30 classes are required for the whole framework and to run a typical laravel project.
  • Simplified error logging. Tracking errors is easier than ever.

Please visit <a href="http://joshyfrancis.c1.biz" target="_blank">http://joshyfrancis.c1.biz</a> to get an overview. This is the playground. You can register as a new user.

Visit <a href="http://joshyfrancis.c1.biz/route9999/23/test/123/test2/qwe" target="_blank">http://joshyfrancis.c1.biz/route9999/23/test/123/test2/qwe</a> to see the speed even on the 9999th route. Also check <a href="http://joshyfrancis.c1.biz/validatortest/create" target="_blank">http://joshyfrancis.c1.biz/validatortest/create</a> to see validator class in action.

  • check routes/web.php for more tests

I am working on the documentation. Please wait...


Screenshots (1)  
  • storage/app/public/docs/moved_5d14b4fda8cce.jpg
  Files folder image Files (86)  
File Role Description
Files folder imageapp (1 file, 1 directory)
Files folder imageclasses (33 files)
Files folder imageconfig (1 file)
Files folder imagepublic (8 files, 3 directories)
Files folder imageresources (1 directory)
Files folder imageroutes (1 file)
Files folder imagesql (1 file)
Files folder imagestorage (1 directory)
Accessible without login Plain text file .env Data Auxiliary data
Accessible without login Plain text file .htaccess Data Auxiliary data
Plain text file artisan Class Class source
Accessible without login Plain text file cache_clear.bat Data Auxiliary data
Accessible without login Image file if_simpline_48_2305614.png Icon Icon image
Accessible without login Plain text file index.php Example Example script
Accessible without login Plain text file LICENSE Lic. License text
Accessible without login Plain text file MIT.svg Data Auxiliary data
Accessible without login Plain text file phpnopea.svg Data Auxiliary data
Accessible without login Plain text file README.md Doc. Documentation
Accessible without login Plain text file storage_link.bat Data Auxiliary data

  Files folder image Files (86)  /  app  
File Role Description
Files folder imageHttp (1 file, 2 directories)
  Plain text file User.php Class Class source

  Files folder image Files (86)  /  app  /  Http  
File Role Description
Files folder imageControllers (3 files, 3 directories)
Files folder imageMiddleware (5 files)
  Plain text file Kernel.php Class Class source

  Files folder image Files (86)  /  app  /  Http  /  Controllers  
File Role Description
Files folder imageAdmin (2 files)
Files folder imageAuth (2 files)
Files folder imageCommon (1 file)
  Plain text file HomeController.php Class Class source
  Plain text file ResourceController.php Class Class source
  Plain text file ValidatorTestController.php Class Class source

  Files folder image Files (86)  /  app  /  Http  /  Controllers  /  Admin  
File Role Description
  Plain text file NewsController.php Class Class source
  Plain text file UserController.php Class Class source

  Files folder image Files (86)  /  app  /  Http  /  Controllers  /  Auth  
File Role Description
  Plain text file LoginController.php Class Class source
  Plain text file RegisterController.php Class Class source

  Files folder image Files (86)  /  app  /  Http  /  Controllers  /  Common  
File Role Description
  Accessible without login Plain text file helper.php Aux. Configuration script

  Files folder image Files (86)  /  app  /  Http  /  Middleware  
File Role Description
  Plain text file RedirectIfAuthenticated.php Class Class source
  Plain text file Sample.php Class Class source
  Plain text file Sample2.php Class Class source
  Plain text file ValidatePostSize.php Class Class source
  Plain text file VerifyCsrfToken.php Class Class source

  Files folder image Files (86)  /  classes  
File Role Description
  Plain text file App.php Class Class source
  Plain text file Auth.php Class Class source
  Accessible without login Plain text file Cookie.php Example Example script
  Plain text file DB.php Class Class source
  Accessible without login HTML file exception.html Doc. Documentation
  Accessible without login Plain text file ExceptionHandler.php Example Example script
  Plain text file FileBag.php Class Class source
  Accessible without login Plain text file helpers.php Example Example script
  Plain text file Model.php Class Class source
  Accessible without login HTML file page_not_found.html Doc. Documentation
  Plain text file ParameterBag.php Class Class source
  Plain text file Phpnopea_Auth.php Class Class source
  Plain text file Phpnopea_AuthenticatesUsers.php Class Class source
  Plain text file Phpnopea_Cache.php Class Class source
  Plain text file Phpnopea_Controller.php Class Class source
  Plain text file Phpnopea_EncryptCookies.php Class Class source
  Plain text file Phpnopea_Hash.php Class Class source
  Plain text file Phpnopea_QueryException.php Class Class source
  Plain text file Phpnopea_Request.php Class Class source
  Plain text file Phpnopea_Session.php Class Class source
  Plain text file Phpnopea_Storage.php Class Class source
  Plain text file Phpnopea_TrimStrings.php Class Class source
  Plain text file Phpnopea_User.php Class Class source
  Plain text file Phpnopea_VerifyCsrfToken.php Class Class source
  Plain text file Request.php Class Class source
  Plain text file Route.php Class Class source
  Plain text file Session.php Class Class source
  Plain text file SessionManager.php Class Class source
  Plain text file Storage.php Class Class source
  Accessible without login HTML file token_mismatch.html Doc. Documentation
  Plain text file UploadedFile.php Class Class source
  Plain text file Validator.php Class Class source
  Plain text file View.php Class Class source

  Files folder image Files (86)  /  config  
File Role Description
  Accessible without login Plain text file filesystems.php Aux. Configuration script

  Files folder image Files (86)  /  public  
File Role Description
Files folder imagecss (1 file)
Files folder imageimg (1 file)
Files folder imagejs (1 file)
  Accessible without login Plain text file .htaccess Data Auxiliary data
  Plain text file app_loader.php Class Class source
  Accessible without login Image file favicon.ico Data Auxiliary data
  Accessible without login Plain text file index.php Example Example script
  Accessible without login Plain text file nginx_config.txt Doc. Documentation
  Accessible without login Plain text file replace_laravel_index.php Example Example script
  Accessible without login Plain text file robots.txt Doc. Documentation
  Accessible without login Plain text file web.config Data Auxiliary data

  Files folder image Files (86)  /  public  /  css  
File Role Description
  Accessible without login Plain text file app.css Data Auxiliary data

  Files folder image Files (86)  /  public  /  img  
File Role Description
  Accessible without login Image file logo.png Icon Icon image

  Files folder image Files (86)  /  public  /  js  
File Role Description
  Accessible without login Plain text file app.js Data Auxiliary data

  Files folder image Files (86)  /  resources  
File Role Description
Files folder imageviews (4 files, 4 directories)

  Files folder image Files (86)  /  resources  /  views  
File Role Description
Files folder imageauth (2 files)
Files folder imageinclude_view (1 file)
Files folder imagelayouts (1 file)
Files folder imagevalidatortest (1 file)
  Accessible without login Plain text file home.blade.php Aux. Configuration script
  Accessible without login Plain text file include_test.blade.php Aux. Configuration script
  Accessible without login Plain text file include_test2.blade.php Aux. Configuration script
  Accessible without login Plain text file include_view.php Example Example script

  Files folder image Files (86)  /  resources  /  views  /  auth  
File Role Description
  Accessible without login Plain text file login.blade.php Aux. Configuration script
  Accessible without login Plain text file register.blade.php Aux. Configuration script

  Files folder image Files (86)  /  resources  /  views  /  include_view  
File Role Description
  Accessible without login Plain text file index.blade.php Aux. Configuration script

  Files folder image Files (86)  /  resources  /  views  /  layouts  
File Role Description
  Accessible without login Plain text file app.blade.php Aux. Configuration script

  Files folder image Files (86)  /  resources  /  views  /  validatortest  
File Role Description
  Accessible without login Plain text file create.blade.php Aux. Configuration script

  Files folder image Files (86)  /  routes  
File Role Description
  Accessible without login Plain text file web.php Example Example script

  Files folder image Files (86)  /  sql  
File Role Description
  Accessible without login Plain text file prologin.sql Data Auxiliary data

  Files folder image Files (86)  /  storage  
File Role Description
Files folder imageapp (1 directory)

  Files folder image Files (86)  /  storage  /  app  
File Role Description
Files folder imagepublic (2 files, 1 directory)

  Files folder image Files (86)  /  storage  /  app  /  public  
File Role Description
Files folder imagedocs (1 file)
  Accessible without login Plain text file file.txt Doc. Documentation
  Accessible without login Image file logo.png Icon Icon image

  Files folder image Files (86)  /  storage  /  app  /  public  /  docs  
File Role Description
  Accessible without login Plain text file moved_5d130b85d5627.ini Data Auxiliary data

The PHP Classes site has supported package installation using the Composer tool since 2013, as you may verify by reading this instructions page.
Install with Composer Install with Composer
 Version Control Unique User Downloads Download Rankings  
 100%
Total:46
This week:1
All time:10,785
This week:57Up