Получите Результаты Включения в Строку в PHP?

Вот пример того, как Вы могли бы сделать это в Python, понятия подобны на любом языке.

>>> import urllib2, string
>>> devilsdict = urllib2.urlopen('http://www.gutenberg.org/files/972/972.txt').read()
>>> workinglist = devilsdict.split()
>>> cleanlist = [item.strip(string.punctuation) for item in workinglist]
>>> results = {}
>>> skip = {'a':'', 'the':'', 'an':''}
>>> for item in cleanlist:
      if item not in skip:
        try:
          results[item] += 1
        except KeyError:
          results[item] = 1

>>> results
{'': 17, 'writings': 3, 'foul': 1, 'Sugar': 1, 'four': 8, 'Does': 1, "friend's": 1, 'hanging': 4, 'Until': 1, 'marching': 2 ...

первая строка просто получает библиотеки, которые помогают с частями проблемы, как во второй строке, где загрузки urllib2 копия Словаря "дьявола Ambrose Bierce" следующие строки входят в список всех слов в тексте без пунктуации. Тогда Вы создаете хэш-таблицу, которая в этом случае похожа на список уникальных слов, связанных с числом. Для цикла пробегается через каждое слово в книге Bierce, если уже существует запись того слова в таблице, каждое новое возникновение добавляет тот к значению, связанному с тем словом в таблице; если слово еще не появилось, оно добавляется к таблице со значением 1 (значение одного возникновения.) Для случаев Вы говорите о, Вы хотели бы уделить намного больше внимания деталям, например, с помощью капитализации, чтобы помочь определить имена собственные только посреди предложений, и т.д., это очень грубо, но выражает понятие.

Для вхождения в материал стемминга и плюрализации, эксперимент, затем изучают стороннюю работу, я наслаждался частями NLTK, который является академическим проектом с открытым исходным кодом, также в Python.

22
задан Kirk Ouimet 29 November 2009 в 12:23
поделиться

4 ответа

class Application {
    protected static $_singletonFoo=NULL;

    public static function foo() {
        if(NULL === self::$_singletonFoo) {
            self::$_singletonFoo = new Foo;
        }
        return self::$_singletonFoo;
    }

}

Я бы так и поступил. Он создает объект по запросу:

Application::foo()->bar();

Я так и делаю, он соблюдает принципы ООП, это меньше кода, чем то, что вы делаете прямо сейчас, и объект создается только тогда, когда он нужен коду в первую очередь время.

Примечание : то, что я представил, даже не является настоящим одноэлементным шаблоном. Синглтон допускает только один экземпляр самого себя, определяя конструктор (Foo :: __ constructor ()) как закрытый. Это только «глобальная» переменная, доступная для всех экземпляров «Приложения». Вот почему я думаю, что его использование правильно, поскольку оно НЕ игнорирует хорошие принципы ООП. Конечно, как и все остальное в мире, этим «шаблоном» тоже не следует злоупотреблять!

Я видел, как он используется во многих фреймворках PHP, в том числе в Zend Framework и Yii. И вы должны использовать фреймворк. Я не собираюсь говорить вам, какой именно.

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

class Application {
        protected static $_singletonFoo=NULL;
        protected static $_helperName = 'Foo';

        public static function setDefaultHelperName($helperName='Foo') {
                if(is_string($helperName)) {
                        self::$_helperName = $helperName;
                }
                elseif(is_object($helperName)) {
                        self::$_singletonFoo = $helperName;
                }
                else {
                        return FALSE;
                }
                return TRUE;
        }
        public static function foo() {
                if(NULL === self::$_singletonFoo) {
                        self::$_singletonFoo = new self::$_helperName;
                }
                return self::$_singletonFoo;
        }
}

Здесь достаточно возможностей для улучшения. Это просто PoC, используйте ваше воображение.

Почему это так? Что ж, в большинстве случаев приложение не будет проходить модульное тестирование, оно будет запускаться , надеюсь, в производственной среде . Сила PHP - в его скорости. PHP НЕ является и никогда не будет «чистым языком ООП», как Java.

В приложении есть только один класс Application и не более одного экземпляра каждого из его помощников (согласно ленивой загрузке, как указано выше). Конечно, синглтоны - это плохо, но опять же, только если они не соответствуют реальному миру. В моем примере это так.

Стереотипные "правила" вроде "

57
ответ дан 29 November 2019 в 03:42
поделиться

Вы также можете заставить включенный файл возвращать результат, а не печатать его. Затем вы можете использовать его в переменной, как и во втором примере.

<?php
    return 'Hello world.';
?>
4
ответ дан 29 November 2019 в 03:42
поделиться

test.php

<?php

return 'Hello World';

?>

<?php

$t = include('test.php');

echo $t;

?>

Пока во включенном файле есть оператор возврата, он будет работать.

8
ответ дан 29 November 2019 в 03:42
поделиться
$test = file_get_contents('test.php');
echo $test; //Outputs "Hello world.";
-4
ответ дан 29 November 2019 в 03:42
поделиться
Другие вопросы по тегам:

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