Создание класса в классе
Возможно ли создать class в class?
Пример:
<?php
class NameClass
{
class NameClassTwo
{
...
}
}
?>
<?php
class::class::function(...)
?>
Возможно ли сделать что-то такое? Или если нет, то есть ли альтернативные варианты?
А так же возможно ли сделать
<?php
function($type, function(...))
{
}
?>
?
Ответы (1 шт):
Вложенные и приватные классы - нет
Возможно ли создать
classвclass?
Нельзя, PHP такой конструкции не позволяет, в отличие от Java. То же самое с видимостью классов - они всегда публичные, потому нельзя сделать классы private для их использования только внутри вашего неймспейса.
Если так надо обозначить класс, который обязательно должен быть внутренним, используйте префикс Internal*, так чисто семантически вы обозначите, что этот класс должен использоваться только в вашем коде.
Насчёт функций высшего порядка - да
Функцию высшего порядка можно сделать, без проблем, вот пример
/**
* ...
* @param callable $функция не принимает параметров
* ...
*/
function функцияВысшегоПорядка($какой_то_параметр, $функция)
{
// ...
$функция(); // или call_user_func($функция);
// ...
}
Вызывать эту функцию можно вот так
// с анонимной функцией
функцияВысшегоПорядка('что-то', function() { ... });
// передать метод объекта
функцияВысшегоПорядка('что-то', [$object, 'objectMethod']);