Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#2 Re: Laravel 5.x » Объясните, пожалуйста, https://laravel.com/docs/5.5/container#binding » 06.12.2017 01:12:11

Статьи прочитал, в целом понимание сложилось о контейнерах, но буду ещё читать.

А вот что такое за синтаксис $this['mailer.class'];? http://fabien.potencier.org/introductio … ainer.html
Как устанавливается значение $this['mailer.class']?
У меня на $this['mailer.class']=1; Fatal error: Uncaught Error: Cannot use object of type A as array

#3 Laravel 5.x » Непонятка с цепочкой вызовов » 03.12.2017 14:34:35

igor7
Ответов: 1

Если сделать:

return view('myview);

то вернётся страница пользователю.

А вот в этом коде

return view('myview')->with($data);

непонятно почему он работает, т.к.  view('myview') уже должно вернуть страницу.

Скажем если бы было так:

return view('myview)->show();
return view('myview')->with($data)->show();

то понятно.

#4 Laravel 5.x » Объясните, пожалуйста, https://laravel.com/docs/5.5/container#binding » 03.12.2017 14:17:51

igor7
Ответов: 4

https://laravel.com/docs/5.5/container#binding -- что это такое?
Гуглил binding php, там все ссылки на Late static binding. Тут что-то другое.

Что это за связывание? Зачем нужно это делать? Как оно используется?

$this->app->bind('HelpSpot\API', function ($app) {
    return new HelpSpot\API($app->make('HttpClient'));
});

$this->app->singleton('HelpSpot\API', function ($app) {
    return new HelpSpot\API($app->make('HttpClient'));
});

$api = new HelpSpot\API(new HttpClient);
$this->app->instance('HelpSpot\API', $api);

$this->app->when('App\Http\Controllers\UserController')
          ->needs('$variableName')
          ->give($value);

...

#5 Re: Laravel 5.x » Где находится исходный код Validator::make? » 03.12.2017 12:47:05

Спасибо. Ладно буду пытаться работать как пользователь. Моя проблема в том, что у меня уже есть информационная система (ERP), которую я пишу и поддерживаю c 2006 года. И у меня уже нет совместимости по ряду моментов. Например, сейчас мне нужно CRUD первый сделать.
И мне надо мои ограничения целостности привести к ограничениям целостности Laravel дополнив своими https://laravel.com/docs/5.5/validation … tion-rules
Я не могу имя таблиц в БД менять, мне в дочернем классе от Model в конструкторе приходится делать $this->setTable('mytblname');

И вот я должен шагать пока по этим граблям. Если бы я с нуля писал, то было бы намного проще. Можно, конечно, сразу начать всё с чистого листа, и потом уже БД конвертнуть... Но система большая. На её переписывание несколько месяцев может уйти, я даже не знаю сколько.
А мне параллельно нужно успевать и старую систему дописывать.

#6 Re: Laravel 5.x » Где находится исходный код Validator::make? » 03.12.2017 12:08:33

class Factory implements FactoryContract https://github.com/illuminate/validatio … ry.php#L98
class Validator implements ValidatorContract https://github.com/laravel/framework/bl … idator.php
А где class Validator extends Facade?

А чем плохо было бы тестирование без статического метода? Пока я вот ничего не могу понять, что происходит. В исходном коде не могу понять как классы наследуются, где мой класс, где метод мой.

Я имел в виду желание авторов этих классов в первую очередь. Зачем-то же они нагородили такую хитрую конструкцию, что непонятно где происходит проверка. Ну вот хочу посмотреть как у них проверка проходит. Вот смотрю я сюда https://github.com/illuminate/validatio … y.php#L148 и не понимаю ни что такое $this->translator
ни что за функция для проверки вызывается в конечном итоге return call_user_func($this->resolver, $this->translator, $data, $rules, $messages, $customAttributes); Наверное, можно в слепую делать не понимая, я же тоже не понимаю как машина под капотом устроена, но управляю ей. Но тут всё же несколько другой случай. Я программист, а не пользователь, и не могу по исходному коду понять, что в нём происходит. sad

#7 Re: Laravel 5.x » Где находится исходный код Validator::make? » 03.12.2017 01:36:41

Как всё запутано...

А где же тогда __callStatic? В самом классе его нет. Базового класса у этого класса тоже нет. Магия какая-то. И главное совсем непонятно зачем так делать. Почему нельзя было этот make сразу статическим сделать. Тут может какое-то желание иметь возможность переопределить стандартный make, ну так его можно было бы переопределить при наследовании. И совсем непонятно зачем тут статика.

Я уже и документация прочитал, и книжку Laravel Up & Running, но там на тему архитектуры всех этих классов почти ничего нет.

#8 Re: Laravel 5.x » Где находится исходный код Validator::make? » 02.12.2017 22:38:36

Спасибо за ответ.

Пусть фасад. Но почему путь к нему такой Illuminate\Support\Facades\Validator, и он не указан в строке use?
И это не тот make. Мой make должен быть static.

#9 Laravel 5.x » Где находится исходный код Validator::make? » 02.12.2017 18:13:25

igor7
Ответов: 9

В контроллере

namespace App\Http\Controllers;

use Validator;
use Illuminate\Http\Request;
use Illuminate\Validation\Rule;

class client extends Controller
{
 ...
public function val(Request $request)
{
$validator = Validator::make($request->all(), [
    'toppings' => [
        'required',
        Rule::notIn(['sprinkles', 'cherries']),
    ],
]);
}
}

Но класс Validator находится где-то глубоко https://laravel.com/api/5.5/Illuminate/ … dator.html
В нём нет метода make.

Почему он подключается строкой use Validator; , а не строкой use Illuminate\Contracts\Validation\Validator?

Подвал раздела