Route
Controller
View
Compressor
Model
Storage
Cache
Http client
Exceptions
Log
Console
composer create-project sme/app my_project
php console serve
Route::get('/','mainController@index')->name('home');
Создаём маршрут по пути /
и вызываем метод index
в контроллере mainController
, так же даём имя маршруту home
в цепочке методов ->name()
Route::get('/',function() {
//Тут мы что то выполняем например можем показать какой то вид View('home')
return View('home');
})->name('home');
Route::get('/catalog/item/{id}',functio...
В папке /controller создаём файл контроллера, например mainController.php
шаблон есть в файле def.php
public function index() {
//Тут мы что то выполняем например можем показать какой то вид View('home')
return View('home');
}
request()->route('id');
Route::get('/catalog/item/{id}',function($id) {
//В переменной $id будет первая переменная из маршрута
request()->input('name');
View('home',['message'=>'hello','message2'=>'world']);
В видах мы можем делать как и обычные вставки php <?php ?>
так и компилируемые с помощью спецсимволов {{Переменная или функция}}
или @функция
<h1>Hello World!!!</h1>
<strong>yes {{$message}} {{$message2}}!</strong>
Time: {{date('H:i:s')}}
@extends('lay.html')
@section('content')
<div>Контент</div>
@endsection
@section('head','Текст')
@yield('content')
@php
$var = 123;
@endphp
<ul>
@foreach($items as $item)
<li>{{$item}}</li>
@endforeach
</ul>
Compiler::declare(имя функции
,анонимная функция(
агрументы переданные в функцию,
последним всегда будет анонимная функция для добавления в конец буффера)
)
Compiler::declare('plus',function($arg1,$arg2,$appendFnc){
$appendFnc('<?php echo '.$arg1.'; ?>');
return "<?php echo ".($arg1+$arg2)."; ?>";
});
@plus(2,4)
<link href="{{compressor(['css/style.css', 'css/style2.css'], 'styles.css')}}" rel="stylesheet">
Если содержимое файлов отлично от text/javascript
или text/css
можем указать своё в 3 агрументе функции
По умолчанию имя таблицы должно быть таким же как и название класса модели, но можно переназначить с помощью свойства класса $table
protected $table='other_table';
public function index() {
$this->model("db");
...
Controller::model("db");
$db = $this->model()->db;
Controller::model("db")->find(1)->delete()
$db->select('name')->where('id',1)->first();
$db->select('name','test','status')->where('uid',1)->get();
$db->name = 'name';
$db->price = '123';
$db->save();
$db->find(1);
$db->name = 'name2';
$db->price = '1234';
$db->save();
$db->find(1);
$db->delete();
Storage::disk('local')->put('file.txt','какие то данные');
Storage::disk('local')->get('file.txt');
Storage::disk('local')->delete('file.txt');
Storage::disk('local')->exists('file.txt');
...
<input type="file" name="file" />
<input type="text" name="fileName" value="default"/>
...
request()->file('file')->storeAs('',request()->input('fileName').'.jpg');
Cache::put('message','Hello World!',60);
Cache::get('message');
Cache::pull('message');
Cache::forget('message');
Cache::has('message');
$response = Http::get('https://url');
$response->body(); //Тело ответа
$response->json(); //Если запрашивали json можно сразу преобразовать в массив
$response->header('имя заголовка'); //Получить заголовок из ответа
$response->headers(); //Получить все заголовки в виде массива
$response->ok(); //Если всё хорошо то true
$response->successful(); //Если код от 200 до 299
$response->failed(); //Если код от 400 до 499
$response->clientError(); //Если код 400
$response->serverError(); //Если код 500
Http::post('https://url',['name'=>'value']);
Если нужно выполнить обычный application/x-www-form-urlencoded
то добавьте метод asForm перед выполнением запроса
Http::asForm()->post('https://url',['name'=>'value']);
Http::asMultipart()->post('https://url',['name'=>'value']);
Http::withBasicAuth('user', 'password')->get('https://url');
Http::withDigestAuth('user', 'password')->get('https://url');
Http::withDigestAuth('user', 'password')->withRealm('realm')->get('https://url');
Http::timeout('20')->get('https://url');
Http::post('https://url',['name'=>'value'])->throw();
Http::post('https://url',['name'=>'value'])->throw(function($response, $error){
die("ой, что-то пошло не так");
});
Exceptions::declare('имя_исключения',function($data=""){
return response('что то сломалось '.$data);
});
Exceptions::throw('имя_исключения', 'Обновите страницу');
abort('имя_исключения');
Exceptions::declare('validate',function($errors){
return response()->json([
'status'=>false,
'errors'=>$errors
]);
});
...
# Logs
LOG_ENABLED=true
...
Log::info('Какой то вывод');
Log::error('Ошибка');
Например если мы хотим вывести таймер или что то подобное можно использовать метод thisLine
в этом случае информация не запишется в файл а будет перезаписываться на этой же строке в консоле
Log::thisLine(true)->info(date('s'));
php console serve
php console cache:clear
Route::console('time',function(){
while(true) { //Создаём вечный цикл
Log::thisLine(true)->info(date('H:i:s')); //Выводим текущее время и смещаем каретку в начало
sleep(1); //Ставим задержку на выполнение в 1 секунду
}
});
php console time
Route::console('hello:{arg1}',function($arg1){
Log::info('Hello '.$arg1);
//или
Log::info('Hello '.request()->route('arg1'));
...
php console hello:world