Получите все имена методов, запускающиеся с подстроки от объекта PHP

Вырезание и вставление выравнивает

, Все знают Ctrl + X и Ctrl + C для вырезания/копирования текста; но Вы знали, что в VS не должны выбирать текст сначала, если Вы хотите сократить или скопировать одну строку? Если ничто не будет выбрано, целая строка будет сокращена или скопирована.

26
задан Machavity 1 August 2019 в 13:05
поделиться

4 ответа

Вы можете использовать preg_grep () для отфильтруйте их:

$method_names = preg_grep('/^bla_/', get_class_methods($object));
45
ответ дан 28 November 2019 в 07:02
поделиться

Попробуйте:

$methods = array();
foreach (get_class_methods($myObj) as $method) {
    if (strpos($method, "bla_") === 0) {
        $methods[] = $method;
    }
}

Обратите внимание, что здесь требуется === . == не будет работать, поскольку strpos () возвращает false , если совпадений не найдено. Из-за динамической типизации PHP это значение равно 0 , и поэтому требуется строгая (типобезопасная) проверка равенства.

6
ответ дан 28 November 2019 в 07:02
поделиться

Почему бы вам просто не создать свою собственную функцию, которая просматривает массив из get_class_methods () и проверяет каждый элемент на соответствие «bla_» и возвращает новый список с каждым совпадающим значением?

1
ответ дан 28 November 2019 в 07:02
поделиться

Я бы предложил что-то более гибкое, например, это (если имена методов не являются динамическими или неизвестны):

interface ITest
{
    function blah_test();
    function blah_test2();
}

class Class1 implements ITest
{
    function blah_test()
    {
    }

    function blah_test2()
    {
    }

    function somethingelse()
    {
    }
}

$obj = new Class1();

$methods = array_intersect( get_class_methods($obj), get_class_methods('ITest') );
foreach( $methods as $methodName )
{
    echo "$methodName\n";
}

Выводы:

blah_test
blah_test2
0
ответ дан 28 November 2019 в 07:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: