laravel

Laravel 基礎(一)

http協議模擬發送

<?php 
	
	//创建连接
	$fp = fsockopen('localhost', 80, $errno, $errstr, 10);

	//判断
	if(!$fp) {
		echo $errstr;die;
	}

	$http = '';

	//请求行
	$http .= "POST /class/Public/laravel/http/server.php HTTP/1.1\r\n";

	//请求头
	$http .= "Host: localhost\r\n";
	$http .= "Connection: close\r\n";
	$http .= "Cookie: username=admin;uid=200\r\n";
	$http .= "User-agent: firefox-chrome-safari-ios-android\r\n";
	$http .= "Content-type: application/x-www-form-urlencoded\r\n";
	$http .= "Content-length: 37\r\n\r\n";

	//请求体
	$http .= "email=xiaohigh@163.com&username=admin\r\n";
	
	//发送
	fwrite($fp, $http);

	$res = '';
	//获取结果
	while(!feof($fp)) {
		$res .= fgets($fp);
	}

	echo $res; 
?>

載入Class & Obj

<?php 
	//命名空间使用的演示
	
	namespace one\two;
	//引入类文件
	include '2_1.php';
	include '2_2.php';
	include '2_3.php';

	//实例化对象  /  /   绝对路径   (完全限定名称)
	$obj = new \one\Obj;
	$obj2 = new \one\two\Obj;
	$obj4 = new \one\two\three\Obj;

	//直接实例化  如果当前代码的空间跟类文件的空间是一致的话 可以直接实例化   (非限定名称)
	// $obj3 = new Obj;

	//相对路径  (限定名称)
	// $obj5 = new three\Obj;
	// var_dump($obj5); 

	
 ?>

Laravel 架構圖

Routes

// local: web\laravel\routes\web.php

<?php
     Route::get('/form', function () {
      return view('/form');
     });
 
     Route::get('/put', function () {
      return view('/put');
     });
 
     Route::post('/insert', function () {
        echo 'insert';
     });
     Route::get('/put', function () {
        return view('put');
     });
 
     Route::put('/update', function () {
        return 'update';
     });
 
     Route::get('/delete', function () {
        return view('delete');
     });
 
     Route::delete('/del', function () {
        return 'delete';
     });
 
     Route::get('/article/{id}', function ($id) {
        return 'article'.$id;
     });
     Route::get('/goods/{id}', function ($id) {
        return 'goods'.$id;
     })->where('id', '\d+');
 
     Route::get('/{type}-{id}', function ($type, $id) {
        return 'type'.$type.'&'.$id;
    });
?>

Middleware 中間件

//SSH
php72 artisan make:middleware Login


//\web\laravel\app\Http\Middleware\Login.php

public function handle($request, Closure $next)
    {
        if(!session('uid')){

            return redirect('/login');

        }
        return $next($request);
    }



//\web\laravel\app\Http\Kernel.php

protected $routeMiddleware = [
'login' => \App\Http\Middleware\Login::class,
];


// \web\laravel\routes\web.php

 Route::get('/setting', [
         'middleware' => 'login',
         'uses' => function(){
             echo 'setting page';
         }
     ]);

Route::get('/session', function () {
        session(['uid' => 10]);
       });

Controllers

//Route

Route::get('/controller', 'UserController@show');

       Route::get('/user/edit/{id}','UserController@edit');

       Route::get('/user/delete/{id}',[
           'as' => 'udelete',
           'uses' => 'UserController@delete'
           ]);

      Route::get('/user/update',[

        'middleware' => 'login',
        'uses' => 'UserController@update',

      ]);

      Route::get('/user/block','UserController@block')->middleware('login');

      Route::resource('articles','ArticleController');


//php72 artisan make:controller ArticleController --resource

\\\web\laravel\app\Http\Controllers

    public function index()
    {
        echo 'home';
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        return view('create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        echo 'id';
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        return view('edit');
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        echo 'update';
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        echo 'del';
    }
}


//php72 artisan make:controller ArticleController
// \web\laravel\app\Http\Controllers 

class UserController extends Controller
{
    public function show()
    {
        return 'I Love You';

    }
    public function edit($id)
    {
        echo 'editor'.$id;

    }

    public function delete()
    {
        echo route('udelete',['id'=>100]);

    }

    public function update()
    {
        echo 'updateing';

    }

    public function block()
    {
        echo 'blocked';

    }
}



// web\laravel\resources\views

<form action="/articles/20" method="post">

<input type="text" name="username">
<input type="hidden" name="_method" value="PUT">
{{csrf_field()}}

<input type="submit" value="edit">

</form>

<form action="/articles/300" method="post">

<input type="text" name="username">
<input type="hidden" name="_method" value="DELETE">
{{csrf_field()}}

<input type="submit" value="del">

</form>

Request

//Route

Route::get('/request', 'UserController@request');

//显示一个form表单
Route::get('/user-form', 'UserController@form');

Route::post('/form', 'UserController@insert');


Route::get('/file', 'UserController@show');

Route::post('/upload', 'UserController@upload');

//cookie操作
Route::get('/cookie', 'UserController@cookie');

//闪存操作
Route::get('/flash', 'UserController@flash');
Route::get('/old', 'UserController@old');
Route::get('/flash_1', 'UserController@flash_1');
Route::get('/get_flash', 'UserController@get_flash');


Route::post('/flash','UserController@doflash');


//Controllers

    public function request(Request $request)
    {
       //$method = $request->method();
       //echo $method;
      // $url = $request->ip();
       

       $username = $request->input('username');
       $password = $request->input('password');

       var_dump($username);
       var_dump($password);


    }
    public function form()
    {
       return view('user');
    }

    public function insert(Request $request)
    {
        $username = $request->input('username');
        //$password = $request->input('password');
        var_dump($username);

        $res = $request->has('username');
        //$password = $request->input('password');
        var_dump($res);

        $res2 = $request->only(['username','password']);
        //$password = $request->input('password');
        var_dump($res2);

        $res3 = $request->except(['username','password']);
        //$password = $request->input('password');
        var_dump($res3);

        $res4 = $request->header('Cookie');
        //$password = $request->input('password');
        var_dump($res4);


    }

    public function show()
    {
       return view('upload');
    }

    public function upload(Request $request)
    {
        //检测文件是否有上传
         //$res = $request->hasFile('profile');
        //php脚本中的相对路径,都是相对于当前正在请求的文件。
        if($request->hasFile('profile')) {
              //file_get_contents(filename)
              //file_put_contents(filename, data)
              //fopen(filename, mode)
              //include
            $request->file('profile')->move('./upload', 'liuyan.jpg');
        }
//var_dump($res);


    }

        /**
     * cookie操作
     */
    public function cookie(Request $request)
    {
        //写入cookie setcookie
        // \Cookie::queue('name','xdl',20); //时间单位为分钟不是秒
        return response('')->withCookie('xiongdilian','zhenbang', 5);

        //读取
        // $res = \Cookie::get('name');

        //获取
        // $res = $request->cookie('xiongdilian');

    }

    /**
     * 闪存的演示
     */
    public function flash()
    {
        return view('flash');
    }

    public function doflash(Request $request)
    {
        // var_dump($request->all());
        $request->flash();//将请求过来的参数 都闪存起来
        //跳转到原来页面重写填写参数
        return back();
    }

    public function old()
    {
        var_dump(old('username'));
    }

    /**
     * 自定义闪存
     */
    public function flash_1()
    {
        //手动闪存数据
        \Session::flash('name','xiaohigh');
    }

    /**
     * 读取闪存
     */
    public function get_flash()
    {
        echo session('name');
    }
2