Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Мне тут подсказали. https://php.ru/manual/class.arrayaccess.html Понял что за магические методы.
Статьи прочитал, в целом понимание сложилось о контейнерах, но буду ещё читать.
А вот что такое за синтаксис $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
Если сделать:
return view('myview);
то вернётся страница пользователю.
А вот в этом коде
return view('myview')->with($data);
непонятно почему он работает, т.к. view('myview') уже должно вернуть страницу.
Скажем если бы было так:
return view('myview)->show();
return view('myview')->with($data)->show();
то понятно.
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);
...
Спасибо. Ладно буду пытаться работать как пользователь. Моя проблема в том, что у меня уже есть информационная система (ERP), которую я пишу и поддерживаю c 2006 года. И у меня уже нет совместимости по ряду моментов. Например, сейчас мне нужно CRUD первый сделать.
И мне надо мои ограничения целостности привести к ограничениям целостности Laravel дополнив своими https://laravel.com/docs/5.5/validation … tion-rules
Я не могу имя таблиц в БД менять, мне в дочернем классе от Model в конструкторе приходится делать $this->setTable('mytblname');
И вот я должен шагать пока по этим граблям. Если бы я с нуля писал, то было бы намного проще. Можно, конечно, сразу начать всё с чистого листа, и потом уже БД конвертнуть... Но система большая. На её переписывание несколько месяцев может уйти, я даже не знаю сколько.
А мне параллельно нужно успевать и старую систему дописывать.
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); Наверное, можно в слепую делать не понимая, я же тоже не понимаю как машина под капотом устроена, но управляю ей. Но тут всё же несколько другой случай. Я программист, а не пользователь, и не могу по исходному коду понять, что в нём происходит.
Как всё запутано...
А где же тогда __callStatic? В самом классе его нет. Базового класса у этого класса тоже нет. Магия какая-то. И главное совсем непонятно зачем так делать. Почему нельзя было этот make сразу статическим сделать. Тут может какое-то желание иметь возможность переопределить стандартный make, ну так его можно было бы переопределить при наследовании. И совсем непонятно зачем тут статика.
Я уже и документация прочитал, и книжку Laravel Up & Running, но там на тему архитектуры всех этих классов почти ничего нет.
Спасибо за ответ.
Пусть фасад. Но почему путь к нему такой Illuminate\Support\Facades\Validator, и он не указан в строке use?
И это не тот make. Мой make должен быть static.
В контроллере
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?