Качество, уровень жизни и развитие сферы услуг
Барш Т. И. Анализ уровня жизни населения // Новое слово в науке: перспективы развития: материалы YII Междунар. науч.-практ. конф. (Чебоксары, 15 янв.2016 г). Чебоксары: Интерактив плюс, 2016. № 1(7).
Уровень жизни и бедность
Барш Т. И. Анализ уровня жизни населения // Новое слово в науке: перспективы развития: материалы YII Междунар. науч.-практ. конф. Чебоксары: Интерактив плюс, 2019. № 1(7). С. 204-207. 2. Берендеева
Разработка интернет магазина спортивной обуви
руководство / Б. Маклафлин. - М.: Питер, 2020. - 512 c.; 14 Сафронов, Марк Разработка веб-приложений в Yii 2 / Марк Сафронов. - М.: ДМК Пресс, 2022. - 855 c.; 15 Хадсон, Пол PHP. Справочник / Пол Хадсон. -
ГЕОЛОКАЦИЯ ВКОНТАКТЕ, WEB-СЕРВИС “GOOUT”
MicrosoftSQLServer 2008. 3. Документация Laravel. https://laravel.com/docs/5.4 4. Документация Yii. http://www.yiiframework.com/doc/ 5. Документация VK.Api. https://vk.com/dev/openapi 6. Интерьвю
Так какие же подводные камни есть в архитектуре Yii2? Почитал холиваров на тему Yii vs Phalcon. Заинтересовал…
подводные камни есть в архитектуре Yii2? Почитал холиваров на тему Yii vs Phalcon. Заинтересовал один нюанс про DI контейнеры. В Yii это yii::$app->service //доступно везде и всегда В фалконе надо передавать
Ответ на вопрос
Один из основных минусов подхода Yii2 к DI контейнерам, как указано в вашем вопросе, может быть связан с использованием глобальной переменной Yii::$app для доступа к сервисам. Это делает код менее модульным и тестируемым, так как сервисы становятся недоступными без доступа к глобальной переменной Yii::$app. Это усложняет написание модульных тестов и усложняет поддержку приложения в целом.Кроме того, использование глобальной переменной может стать источником проблем с производительностью и масштабируемостью приложения. Поскольку доступ к сервисам осуществляется через Yii::$app, это может привести к узким местам в обработке запросов и затруднить масштабирование приложения при увеличении нагрузки.Таким образом, необходимо обдуманно использовать глобальные переменные в архитектуре приложения и выбирать подход, который делает код более модульным, тестируемым и масштабируемым.
Еще
Почему Yii:$app это плохо? С точки зрения ООП
в симфони такого не встретишь.
Почему Yii:$app это плохо? С точки зрения ООП в симфони такого не встретишь.
Ответ на вопрос
Yii::$app это плохо с точки зрения ООП, потому что это обращение к глобальному объекту приложения, что нарушает принцип инкапсуляции и делает код менее читаемым и поддерживаемым. Вместо этого, в объектно-ориентированных приложениях предпочтительно использовать инъекцию зависимостей, чтобы передавать необходимые объекты внутрь классов через конструкторы или сеттеры, что делает код более гибким и тестируемым. В Symfony такой подход применяется чаще, что способствует более чистой и структурированной архитектуре приложения.
Еще
Как в Yii2 переопределить стандартный метод \yii\swiftmailer\Mailer::send()? Мне необходимо переопределить…
Как в Yii2 переопределить стандартный метод \yii\swiftmailer\Mailer::send()? Мне необходимо переопределить метод \yii\swiftmailer\Mailer::send(). Хочу что бы отправка писем осуществлялась через Gearman
Ответ на вопрос
Проблема заключается в том, что в вашем воркере Gearman вы создаете новый экземпляр \yii\swiftmailer\Mailer() вместо использования экземпляра GearmanMailer, в котором определен метод sendMessage(). Чтобы исправить это, вам нужно передавать в воркер GearmanMailer вместо создания нового экземпляра Mailer. Используйте передачу экземпляра GearmanMailer в параметрах задачи Gearman и используйте его в воркере:В вашем классе GearmanMailer измените функцию send следующим образом:class GearmanMailer extends \yii\swiftmailer\Mailer
{
private $_view = [];
private $_viewPath;
private $_message;
public function send($message) {
\Yii::$app->gearman->getDispatcher()->background('SendMailWorker', new JobWorkload([
'params' => [
'message' => $message,
'this' => $this
]
]));
}
}И в вашем воркере SendMailWorker измените следующим образом:class SendMailWorker extends JobBase
{
public $thread_limit = 1;
public function execute(\GearmanJob $job = null)
{
$params = $this->getWorkload($job)->getParams();
$mailer = $params['this'];
if (!$mailer->beforeSend($params['message'])) {
return false;
}
$address = $params['message']->getTo();
if (is_array($address)) {
$address = implode(', ', array_keys($address));
}
\Yii::info('Sending email "' . $params['message']->getSubject() . '" to "' . $address . '"', __METHOD__);
if ($mailer->useFileTransport) {
$isSuccessful = $mailer->saveMessage($params['message']);
} else {
$isSuccessful = $mailer->sendMessage($params['message']);
}
$mailer->afterSend($params['message'], $isSuccessful);
return $isSuccessful;
}
}Таким образом, вы будете использовать экземпляр GearmanMailer в вашем воркере Gearman, и метод sendMessage() будет вызываться успешно.
Еще
Можно ли в Kohana отключить правило в модели для определенного экшена? Собсно сабж, Yii такое позволяет, реализовано…
Можно ли в Kohana отключить правило в модели для определенного экшена? Собсно сабж, Yii такое позволяет, реализовано ли это в Kohana?
Ответ на вопрос
В Kohana нет встроенной функциональности для отключения правила в модели для определенного действия. Однако, вы можете достичь подобного эффекта, добавив условие в вашем методе модели, которое проверяет нужно ли применять правило или нет.Например, вместо того, чтобы отключить правило, вы можете добавить условие в методе вашей модели, чтобы применять или игнорировать правило в зависимости от действия:class Model_User extends Model {
protected $_rules = array(
'username' => array(
array('not_empty'),
array('min_length', array(':value', 4)),
array('max_length', array(':value', 20)),
)
);
public function save_user($data) {
if ($this->action == 'create') {
// Применяем правило только при создании пользователя
$this->_rules['username'][] = array('unique', array(':model', ':field', $data['username']));
}
// Применяем все правила для username
$this->check($data);
}
}В приведенном примере, правило 'unique' применяется только при создании пользователя (метод 'create_user'), но не при других действиях. Вы можете адаптировать этот подход для ваших нужд и сценариев использования в Kohana.
Еще
В чём разница в обращении к методам моделей в Yii? Всем привет) Попал в руки сайт сделанный на первом YII. В папке…
В чём разница в обращении к методам моделей в Yii? Всем привет) Попал в руки сайт сделанный на первом YII. В папке models есть файл Users.php. В этом файле функция funсName (название для примера). Вижу
Ответ на вопрос
Привет! Обращение к методам моделей в Yii может происходить двумя способами, как вы уже заметили.app()->user->model->funсName() - в этом случае обращение происходит к экземпляру объекта модели, который уже существует в контроллере или в представлении. Этот способ используется, когда уже есть объект модели, с которым нужно взаимодействовать.Users::model()->funсName() - здесь происходит обращение к статическому методу model() модели Users. Этот подход используется, когда непосредственно создание экземпляра объекта не требуется, а нужно просто получить доступ к методу модели.Оба способа корректны и широко используются в Yii. Как правило, статический метод model() используется для быстрого доступа к методам моделей без создания объекта, в то время как обращение к объекту модели может потребовать предварительной инициализации и передачи данных.
Еще
Как получить текущего пользователя в контроллере — dependency injection? Как получить текущего юзера по нормальному.…
пользователя в контроллере — dependency injection? Как получить текущего юзера по нормальному. Без Yii::$app->user ?
Ответ на вопрос
Для получения текущего пользователя в контроллере с использованием dependency injection в Yii2, вы можете воспользоваться следующим способом. Создайте свой контроллер и объявите зависимость от интерфейса UserInterface:use yii\web\User;
use yii\web\UserInterface;
class MyController extends \yii\web\Controller
{
private $user;
public function __construct(UserInterface $user, $id, $module, $config = [])
{
$this->user = $user;
parent::__construct($id, $module, $config);
}
public function actionIndex()
{
$currentUser = $this->user->getIdentity();
// Далее можно использовать $currentUser для работы с текущим пользователем
}
}В файле конфигурации приложения (например, в файле config/web.php) добавьте следующую конфигурацию:return [
'components' => [
'user' => [
'identityClass' => 'app\models\User',
],
],
];При использовании данного подхода, текущий пользователь будет доступен через dependency injection в контроллере без прямого обращения к статическому свойству Yii::$app->user.
Еще