Jump to content

LokiDi L0ck

Expert
  • Posts

    484
  • Joined

  • Last visited

Posts posted by LokiDi L0ck

  1. Речь идет о синтактическом анализе кода. :)

    Давайте посмотрим первое сообщение.

    я указывал все, и выводит только когда синтаксическая ошибка, а я хочу увидеть абсолютно всё.

    В дальнейшем нахожу комментирование ваших пояснений бессмысленным.

  2. Привязано к конкретному примеру. Дальше сами.

    function normalizePath($path) {
    return rtrim(str_replace(array('/', '\\'), '/', $path), '/');
    }

    $documentRoot = normalizePath(getenv('DOCUMENT_ROOT'));

    $foundedFiles = array();
    $docsDirectory = dirname(normalizePath(__FILE__));
    $needleExtensions = array('doc', 'docx');

    try {
    $directoryIterator = new RecursiveDirectoryIterator($docsDirectory, RecursiveDirectoryIterator::KEY_AS_PATHNAME);
    } catch(Exception $e){
    echo $e->getMessage();
    exit;
    }

    $dirs = new RecursiveIteratorIterator($directoryIterator, RecursiveIteratorIterator::SELF_FIRST);

    foreach ($dirs as $dir => $fileInfo) {
    if (true === $fileInfo->isFile() && in_array(strtolower(pathinfo(($filePath = $fileInfo->getPathname()), PATHINFO_EXTENSION)), $needleExtensions)) {
    $foundedFiles[str_replace($documentRoot, '', normalizePath($filePath))] = $fileInfo->getBasename();
    }
    }

    $output = '';
    if (false === empty($foundedFiles)) {
    foreach ($foundedFiles as $filePath => $fileName) {
    $output .= '<a href="' . $filePath . '">' . $fileName . '</a><br/>';
    }
    }

    echo $output;

  3. $file_ext = substr ($file, (strlen($file)-3), 3);

    Здесь неточность. Вы проверяете $file_ext на doc и docx, но вышеуказанный код для docx возвратит ocx.

    Внесу свою скромную лепту:

    		/**
    * Директория, для поиска файлов. Поиск будет также производиться
    * во всех её поддиректориях.
    * В данном случае она указывается относительно корня сайта
    */
    $docsDirectory = 'docs';

    //Расширения файлов, которые нам необходимы
    $needleExtensions = array('doc', 'docx');

    //Массив найденных файлов
    $foundedFiles = array();

    try {
    $directoryIterator = new RecursiveDirectoryIterator($docsDirectory, RecursiveDirectoryIterator::KEY_AS_PATHNAME);
    } catch(Exception $e){
    echo $e->getMessage();
    exit;
    }

    $dirs = new RecursiveIteratorIterator($directoryIterator, RecursiveIteratorIterator::SELF_FIRST);

    foreach ($dirs as $dir => $fileInfo) {
    if (true === $fileInfo->isFile() && in_array(strtolower(pathinfo(($filePath = $fileInfo->getPathname()), PATHINFO_EXTENSION)), $needleExtensions)) {
    /**
    * Индексируем массив именем файла
    * В случае ОС windows заменяем "\" на "/" в пути файла
    */
    $foundedFiles[$fileInfo->getBasename()] = str_replace('\\', '/', $filePath);
    }
    }

    $output = '';
    if (false === empty($foundedFiles)) {
    /**
    * Прокручиваем массив, создавая ссылки на файлы, где имя
    * ссылки идентично имени файла
    */
    foreach ($foundedFiles as $fileName => $filePath) {
    $output .= '<a href="' . $filePath . '">' . $fileName . '</a><br/>';
    }
    }

    echo $output;

    p.s. В случае, если вы указываете абсолютный путь до файлов, то с корректировкой ссылки на файл думаю справитесь?

    p.p.s. Извиняюсь, поспешил, индексация $foundedFiles именем файла не совсем верный вариант, т.к. в случае одинаковых имён, пути будут затираться.

    Но у вас есть своя голова, допилите, что необходимо. :)

  4. Не понял, о чём ты?

    У вас 1 комментарий

    У вас 2 комментария

    У вас 5 комментариев

    С помощью gettext решается легко и красиво.

    Спасибо за ответ! По началу он меня немного задел "категоричностью", но я сразу же решил пересмотреть своё мнение. :)

    Эта категоричность взята не с потолка, а из опыта (который когда-то начинался как ваш).

    Лучше сразу приобщайтесь к хорошему стилю (хоть и с потерей времени на изучение), чем в будущем ездить на велосипедах с квадратными колёсами.

  5. быстрее

    Не быстрее

    удобнее

    Не удобно для работы с формами слов после числительных.

    Не удобно для независимости работ программистов и переводчиков.

    Не удобное управление переводимыми фразами (см. poEdit)

    красивее

    Не красиво всюду таскать за собой массив.

  6. который будет соответствовать всем требованием красоты и функциональности?

    psywalker

    Чьим требованиям, вашим? :angry:

    Подумайте немного об этом, в итоге согласитесь с товарищем s0rr0w.

  7. CoDy

    Двигаетесь в правильном направлении (из расчёта, что ваш пример лишь представляет общую идею, а не готовый вариант).

    Посмотрите как подобное реализовано в ZF: Zend_View. Если задействовать Zend_Controller, то файлы вида подключаются автоматически.

  8. CoDy

    Забудьте о шаблонизаторах типа smarty (иначе в будущем придётся столкнуться с громадными неповоротливыми конструкциями и тормозной работой).

  9. underW

    Этот пример демонстрирует весь дзен абстрактных классов. Потому его везде и применяют.

    Проведите соответствие в реальной жизни. Любую фигуру (shape) можно нарисовать (метод draw), но если я попрошу нарисовать вас фигуру, вы наверное уточните "какую именно?". Т.е. абстрактное понятие "фигура" может быть нарисовано, но КАК - может быть применимо только к конкретным фигурам типа окружность (circle).

    Именно абстрактное понятие фигура и задаёт наследуемым классам обязанность (абстрактным методом) - уметь себя рисовать, а так же класс shape может содержать реализацию других общих методов для всех фигур.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy