Я могу автоматически загрузить функциональные файлы без классов в PHP?

Вызов close и shutdown имеет два различных эффекта на базовый сокет.

первая вещь указать состоит в том, что сокет является ресурсом в базовой ОС и , несколько процессов могут иметь дескриптор для того же базового сокета.

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

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

, С другой стороны, вызов shutdown для чтения и записи завершений базовое соединение и отправляет FIN / EOF одноранговому узлу независимо от того, сколько процессов имеет дескрипторы к сокету. Однако это не делает , освобождают сокет, и все еще необходимо звонить близко позже.

6
задан JasonDavis 8 September 2009 в 01:40
поделиться

1 ответ

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

<?php
    class HTMLUtil {

        public static function filter($str) {...}
        public static function entities($str) {...}
        public static function encode($str) {...}
        ...etc...
    }
?>

Классы Static Helper / Utility, которые объединяют связанные функциональные возможности, просто собрать вместе, просто объявите свои функции как static :

Объявление членов или методов класса как static делает их доступными без требуется создание экземпляра класса.

Теперь вы можете использовать __ autoload . Вам не нужно создавать экземпляры этих классов, чтобы использовать какие-либо из их статических функций, и это делает ваш код более читабельным (если немного более подробным). Мне всегда приятнее делать что-то вроде:

echo HTMLUtil::filter($str);

вместо:

echo filter($str); //scary filter function, where are you from?

При необходимости вы также можете объявить частный конструктор в своих служебных классах, чтобы предотвратить их создание, чтобы подчеркнуть, что их «всего лишь набор связанные функции ':

private __construct() {...}

Чтобы вызвать статическую функцию из другой функции в том же классе, вы должны сделать это с помощью ключевого слова self (которое ссылается на тот же класс , а не ] объект или экземпляр класса ):

public static function foo()
{
    echo self::bar() . '..and some foo';
}
8
ответ дан 16 December 2019 в 21:43
поделиться
Другие вопросы по тегам:

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