PHP Script - Строка комментариев / раскомментирования - PullRequest
0 голосов
/ 23 февраля 2020

Может ли кто-нибудь дать мне несколько идей или решений для переключения комментариев в файле? Чтобы прочитать значение и переключить комментарий / раскомментировать в той строке, где находится значение.

Например, я хотел бы включить класс Model и инициализировать его.

В некоторых файлах подготовлены включения и инициализации:

//include('foo/Model.php');
//$model = new Model();

Требуется функция для те, кто не может понять, в чем вопрос.

Как раскомментировать?

1 Ответ

1 голос
/ 23 февраля 2020

Спасибо за добавление идей к вашему вопросу! На самом деле это довольно интересный.

Насколько я понимаю, вы ищете динамичный c способ комментирования / раскомментирования строк внутри файла.

Итак, давайте сначала определим наши параметры :

  • Мы хотим манипулировать определенным c файлом (нам нужно имя файла)
  • Мы хотим переключать определенные c номера строк внутри этого файла (список номеров строк) )
function file_toggler(string $file, array $lineNumbers)

Имея это в виду, мне нужно прочитать файл и разбить их строки на номера строк. PHP предоставляет для этого удобную функцию file().

file (): возвращает файл в массиве. Каждый элемент массива соответствует строке в файле с новой строкой.

Имея это в виду, у нас есть все, что нам нужно, чтобы написать функцию:

<?php

function file_toggler(string $file, array $lineNumbers)
{
    // normalize because file() starts with 0 and 
    // a regular user would use (1) as the first number
    $lineNumbers = array_map(function ($number) {
        return $number - 1;
    }, $lineNumbers);

    // get all lines and trim them because 
    // file() keeps newlines inside each line
    $lines = array_map('trim', file($file));

    // now we can take the line numbers and
    // check if it starts with a comment.
    foreach ($lineNumbers as $lineNumber) {
        $line = trim($lines[$lineNumber]);
        if (substr($line, 0, 2) == '//') {
            $line = substr($line, 2);
        } else {
            $line = '//' . $line;
        }

        // replace the lines with the toggled value
        $lines[$lineNumber] = $line;
    }

    // finally we write the lines to the file
    // I'm using implode() which will append a "\n" to every
    // entry inside the array and return it as a string.
    file_put_contents($file, implode(PHP_EOL, $lines));
}


toggleFileComments(__DIR__ . '/file1.php', [3, 4]);

Надеюсь, это поможет: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...