Что тут левого? Говорю все пашет, ошибок нету. Просто phpStorm пишет типа ошибка и use нельзя использовать внутри функции,Код нормально отформатируй.
function testTraits()
{
trait TestTrait {
abstract function tester();
ну и вот это что-то левое
Не понял.Проблема объявлять внутри функции класс и трейты?
Не редактирую, а просто скопировал код с IDE. но там уже дальше тестил с insteadof и as.Я смотрю ты прямо на ходу редактируешь свой первый пост, он эволюционирует на глазах, меняя одну опечатку другой.
Короче, синтаксически объявить класс или что-то другое — можно, работать будет. Если PhpStorm выделяет «use TestTrait1, TestTrait2» внутри трейта с этой ошибкой — это формально баг. Но никого это не волнует, потому что никто в здравом уме внутри функции эти структуры объявлять не будет, они по своей сути глобальны.
Мне кажется что таким способом можно реализовать что типо намеспайсов. То есть пока функция не вызвана класс/трейт/интерфейс не будет определен. Аля динамическое объявление классов. Наверно даже в if можно объявлять.Я смотрю ты прямо на ходу редактируешь свой первый пост, он эволюционирует на глазах, меняя одну опечатку другой.
. Но никого это не волнует, потому что никто в здравом уме внутри функции эти структуры объявлять не будет, они по своей сути глобальны.
3jIo, я тоже смысла не вижу, все глобально! покажи фишку которую позволяет твой изворот?класс/трейт/интерфейс нельзя объявить внутри функции
function a(){
class A{
function b(){ echo 'hallo';}
}
$a = new A;
$a->b();
}
function b(){
class A{
function b(){ echo 'hallo';}
}
$a = new A;
$a->b();
}
a();
b();
$ php 1.php
hallo PHP Fatal error: Cannot redeclare class A in .../1.php on line 11