Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Судя по всему, меня не услышали. Читайте внимательно http://svyatoslav.biz/misc/psr_translation/#_PSR-4
Скорее всего у вас намеспейс или файлы в неправильном регистре. На винде это не заметно, но в юниксах сразу вылезает.
}%Еще можно сразу ставить дату потери актуальности и показывать объявления у которых дата меньше.
Красивое решение!
В конфигах стоит 'log' => env('APP_LOG', 'daily'). Логи подтираются раз в 4 дня каким-то макаром. Не подскажите где копать? Есть в ларе где-то это автоудаление. Хотелось бы его выключить на совсем.
Как вариант можно создать команду https://laravel.ru/docs/v5/artisan#%D0% … 0%B8%D0%BA и положить в планировщик задач https://laravel.ru/docs/v5/scheduling. Что скажут знающие люди о таком подходе? И параллельно вопрос, очереди возможно использовать на обычном хостинге с развернутой ларой без супервизора и тд?
Создал миграцию, в какой последовательности отработают миграции. Как менять эту последовательность? Может кто подскажет?
Я по долгу работы пишу проекты в разных сферах и на разных к сожалению или счастью языках. Так вот понятие модульности настолько расплывчато, в каждом проекте появляются скорее устои и привычки или за счет икспиренса. Как бы вы не были классы или пакеты - важно только одно. Читабельность и простота и целесообразное потраченное время на разработчку. Чем проще для вас - тем лучше. Через месяц, год можно и свой код не разобрать.
Насколько я понимаю вам требуется использовать $this->hasMany
won пишет:php artisan ide-helper:models
После добавления свойства в таблицу. Только почитайте документацию о именовании таблиц или как в модели указать имя таблицы.
так он вроде как для автозаполнения нужен!? с этим проблем нет
Да вы правы. Обьясните зачем вам такой механизм?
php artisan ide-helper:models
После добавления свойства в таблицу. Только почитайте документацию о именовании таблиц или как в модели указать имя таблицы.
Решил
composer global update fxp/composer-asset-plugin --no-plugins
Попробовал поставить. В итоге получил. Кто-то сталкивался? Как решается?
composer create-project --prefer-dist laravel/laravel blog
Installing laravel/laravel (v5.2.29)
- Installing laravel/laravel (v5.2.29)
Loading from cache
Created project in blog
[ReflectionException]
Class Fxp\Composer\AssetPlugin\Repository\NpmRepository does not exist
[ErrorException]
Declaration of Fxp\Composer\AssetPlugin\Repository\AbstractAssetsRepository
::whatProvides() should be compatible with Composer\Repository\ComposerRepo
sitory::whatProvides(Composer\DependencyResolver\Pool $pool, $name, $bypass
Filters = false)
create-project [-s|--stability STABILITY] [--prefer-source] [--prefer-dist] [--repository REPOSITORY] [--repository-url REPOSITORY-URL] [--dev] [--no-dev] [--no-plugins] [--no-custom-installers] [--no-scripts] [--no-progress] [--keep-vcs] [--no-install] [--ignore-platform-reqs] [--] [<package>] [<directory>] [<version>]
тз видели?)
А вот вы меня заинтересовали, как-то упустил lumen из-виду. Очень часто приходиться писать всякого рода апи. Пойду опробую его на саас одной срм, laravel там просто не поднялся из-за ограничений саас аккаунтов(
А в app.php в aliases[] у Вас разве нет фасада Cb? Если есть - то конечно вызов через Cb::method() будет работать - не из-за биндинга в сервис провайдере, а из-за фасада/алиаса.
С этим я осознал. Спасибо.
А в верхнем случае нет ни фасада (в общем-то, класса) с именем HttpClient, ни класса внутри текущего namespace с таким именем - понятно, что неоткуда брать его!
$this->app->booting(function () {
$loader = \Illuminate\Foundation\AliasLoader::getInstance();
$loader->alias('HttpClient', 'Vinelab\Http\Facades\Client');
});
А разве этот код не прописывает алиас?
won пишет:Что я не понимаю в l5? Ведь фасад по сути скрывает подробности реализации, так зачем мне прямой use на класс клиента?
Если ресолвить (получать) этот класс через "волшебные" методы Laravel (допустим, конструктор как в Вашем примере) - то незачем, и так будет работать.
use App\Package\Intis\Contracts\Sms;
use DateTime;
class IntisSms implements Sms
{
public function __construct(HttpClient $client)
{
}
[ReflectionException]
Class App\Package\Intis\HttpClient does not exist
Так все же получается требуется use? Type-hint применяется для все классов созданных мной, с условием что зарегистрирован как сервис контейнер?
Вот пример, который у меня сработал на ура. И я пытаюсь понять почему не работает в данному случае.
Фасад
namespace App\Cb;
use Illuminate\Support\Facades\Facade;
class Cb extends Facade
{
protected static function getFacadeAccessor()
{
return 'CbConfig';
}
}
Сам класс
namespace App\Cb;
class Config
{
private $config = [];
public function getInstance()
{
if(count($this->config) == 0) {
require(CLIENTBASE_DIR.'/include/config.php');
$this->config = $config;
}
return $this->config;
}
/**
* Возврат полного имени таблицы с данными
*
* @param int $tableId айди таблицы из кб
* @return string
*/
public function dataTable($tableId) {
$this->getInstance();
return $this->config['table_prefix']."data".$tableId;
}
/**
* Возвращает полное имя таблицы пользователей
*
* @return string
*/
public function usersTable() {
$this->getInstance();
return $this->config['table_prefix']."users";
}
}
Провайдер
namespace App\Providers;
use App\Cb\Cb;
use Illuminate\Support\ServiceProvider;
class CbConfigProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
Cb::getInstance();
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
$this->app->singleton('CbConfig', 'App\Cb\Config');
}
}
прописал в config/app.php
providers => [
...
App\Package\Intis\IntisServiceProvider::class,
]
и вызов в контроллере, все ок
dd(Cb::dataTable(310))
У Вас же идет прямой вызов средствами PHP:
$response = HttpClient::get('http://example.org');
Тут type-hinting от Laravel непричем. PHP будет сам искать класс HttpClient, а ищет по дефолту - в текущем namespace.
Прошу прощения за путаницу. Посмотрел исходники, собственно вопрос к фасадам. В примере пакета указано
It will automatically alias itself as HttpClient so no need to alias it in your app.php, unless you would like to customize it - in that case edit your 'aliases' in app.php adding 'MyHttp' => 'Vinelab\Http\Facades\Client'
и тогда можно использовать как в первом посте
$response = HttpClient::get('http://example.org');
// raw content
$response->content();
Что я не понимаю в l5? Ведь фасад по сути скрывает подробности реализации, так зачем мне прямой use на класс клиента?
mikhalkevich пишет:.env ибо его предназначение мне тоже не совсем понятно.
Файлик полезный например ты с другом делаеш проект на локальных машинах и пушите его в репозиторий на гит, у вас на локальных машинах свои настройки подключения к базе данных, этот файлик добовляется в гит игнор, в итоге ты не перетираеш настройки подключения к базе друга когда пушиш в гит, а он твои...Ну а когда проект на боевом сервер запускаеш этот файлик вообще можно удалить и настройки подключения прописать уже в config.
Спасибо. Не знал, все не мог понять зачем он нужен и почему коннекты прописывать в двух местах приходилось. А кроме удаление .env файла где-то можно прописать что использовать из config/database.php например? Или работает по принципу файл есть - env, файла нет - из конфига?
Не хватает 'use' в начале файла. По умолчанию используется текущий namespace, поэтому когда Вы говорите 'HttpClient' - подразумевается App\Console\Commands\HttpClient, а такого класса нет.
Либо сверху правильный use - а ля use Vinelab\Http\HttpClient, либо при создании - полный путь: $response = \Vinelab\Http\HttpClient::get()
В сервис провайдере есть прописаны такие строки:
public function register()
{
$this->app['vinelab.httpclient'] = $this->app->share(function ($app) {
return new Client();
});
$this->app->booting(function () {
$loader = \Illuminate\Foundation\AliasLoader::getInstance();
$loader->alias('HttpClient', 'Vinelab\Http\Facades\Client');
});
}
Мне казалось, что указав в конструкторе класс, он инжектируется как зависимость или я не верно понимаю?
public function __construct(HttpClient $client)
{
$this->client = $client;
}
Я больше за л5 на данный момент. Сначала начал с yii2. Неделю покурил документацию, написал тестовый проект и плюнул. Слишком много информации и уровней абстракции, которые в большинстве случаев и не нужны. Порог вхождения в фреймворк как по мне ну прям до издевательства непристойный. Попробовал л5, все просто и довольно гибко, есть некоторые нюансы, но все же хороший инструмент. Сейчас активно юзаю этот фреймворк, возможно поменяю со временем свое мнение. Но пока для меня однозначно л5.
L5.2
Установил пакет http://packalyst.com/packages/package/vinelab/http через композер.
Прописал в config/app.php
Edit app.php and add 'Vinelab\Http\HttpServiceProvider', to the 'providers' array.
Создал команду и пробую вызвать
$response = HttpClient::get('http://example.org');
// raw content
$response->content();
Получаю
PHP Fatal error: Class 'App\Console\Commands\HttpClient' not found in /Users/lodar/Works/PhpStorm/miran/modules/nbapi/app/Console/Commands/TestLog.php on line 47
[Symfony\Component\Debug\Exception\FatalErrorException]
Class 'App\Console\Commands\HttpClient' not found
Что не так сделал?
Привет, есть ли бесплатная среда разработки для Laravel ? что бы подсвечивала код всплывали подсказки функций и т.д. Я знаю что есть PHPStorm но он платный, я видел что используют netbeans я его ставил но что то он не чего не подсвечивает
Если вы студент, оформите себе подписку по спец программе для студентов и будет вам счастье!
Не совсем понимаю практическое применение tagging в сервис-контейнерах. Кто может привести пример использования в жизни?