Использование директивы use в виде

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Закрыто
legos031
Сообщения: 8
Зарегистрирован: 2021.10.17, 20:59

Использование директивы use в виде

Сообщение legos031 »

Всем привет. Понимаю что вопрос не совсем к yii2 а скорее к работе php. Но все-таки. Например, есть у меня view, views\site\about.php. В нем могу получить доступ к объекту view, который является vendor\yiisoft\yii2\web\View.php, вот так $this->title = 'About';
В файле вьюхи мне нужно использовать use yii\helpers\Html. Вот здесь не пойму, html вьюхи подключается в объект класса web\View.php, в котором уже есть директива use yii\helpers\Html.
Зачем в самой вьюхе делать это снова? По идее она в той же области видимости что и объект view. Объясните пжл. Спасибо.
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Использование директивы use в виде

Сообщение unknownby »

legos031 писал(а): 2021.10.17, 21:04 По идее она в той же области видимости что и объект view. Объясните пжл. Спасибо.
Где ж она в той же области видимости, когда View

Код: Выделить всё

namespace yii\web;
а Html

Код: Выделить всё

namespace yii\helpers;
Поэтому и подключаешь её, т.к. не в одной и той же области видимости.
legos031
Сообщения: 8
Зарегистрирован: 2021.10.17, 20:59

Re: Использование директивы use в виде

Сообщение legos031 »

Ниже код из yii\web\view. Там уже есть: use yii\helpers\Html. Вьюха подключается в область видимости этой самой yii\web\view, и там мне снова нужно сделать use yii\helpers\Html, без него не работает.

Код: Выделить всё

<?php

namespace yii\web;

use Yii;
use yii\base\InvalidConfigException;
use yii\helpers\ArrayHelper;
use yii\helpers\Html;
use yii\helpers\Url;
Хотя это возможно из-за того, что yii\web\view наследуется от \yii\base\View, в метод render() которого передается вьюха. Вот в этом родительском классе нет use yii\helpers\Html. Возможно так?
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Использование директивы use в виде

Сообщение unknownby »

legos031 писал(а): 2021.10.18, 09:19 Хотя это возможно из-за того, что yii\web\view наследуется от \yii\base\View, в метод render() которого передается вьюха. Вот в этом родительском классе нет use yii\helpers\Html. Возможно так?
То, что Html подключен в View никоим образом не известно в вашем представлении, которое вы отрендерили.
У вас же нет пространства имён у вашего представления :D
legos031
Сообщения: 8
Зарегистрирован: 2021.10.17, 20:59

Re: Использование директивы use в виде

Сообщение legos031 »

Получается, представление (вьюха) находится в глобальном пространстве имен, т.к. там нет директивы namespace. Понял. Спасибо!
Закрыто