различие между библиотеками и помощниками в php платформах

если у меня есть строковые функции, я использую много, я должен поместить их в класс помощника или класс библиотеки?

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

я должен поместить их в класс библиотеки или класс помощника?

когда я знаю, когда поместить где?

10
задан ajsie 1 February 2010 в 05:40
поделиться

3 ответа

Помощники - это классы, которые помогают что-то еще там, например, может быть помощник для:

массива
строка
URL
ETC

Библиотека - это то, что может быть любое решение; Он может быть создан в первый раз, и никто другой не создал.

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

13
ответ дан 3 December 2019 в 14:43
поделиться

В этом случае можно использовать пользовательский атрибут фильтра действий, который открывает всплывающее окно, если пользователь не авторизован.
В этом фильтре действий просто проверьте, зарегистрирован ли пользователь, и добавьте логическое значение в коллекцию ViewData.
Примените атрибут к действию контроллера.
Затем на странице-шаблоне добавьте условный рендеринг кода, который открывает всплывающее окно.

Код атрибута:

[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, Inherited = true, AllowMultiple = true)]
public class PopupAuthorizeAttribute : AuthorizeAttribute
{
    private void CacheValidateHandler(HttpContext context, object data, ref HttpValidationStatus validationStatus)
    {
        validationStatus = this.OnCacheAuthorization(new HttpContextWrapper(context));
    }

    public override void OnAuthorization(AuthorizationContext filterContext)
    {
        bool isAuthorized = false;
        if (filterContext == null)
        {
            throw new ArgumentNullException("filterContext");
        }
        if (this.AuthorizeCore(filterContext.HttpContext))
        {
            HttpCachePolicyBase cache = filterContext.HttpContext.Response.Cache;
            cache.SetProxyMaxAge(new TimeSpan(0L));
            cache.AddValidationCallback(new HttpCacheValidateHandler(this.CacheValidateHandler), null);
            isAuthorized = true;
        }

        filterContext.Controller.ViewData["OpenAuthorizationPopup"] = !isAuthorized;
    }
}

На странице-шаблоне или в другом распространенном представлении добавьте условную визуализацию:

<% if((bool)(ViewData["OpenAuthorizationPopup"] ?? true)) { %>
 ...Your code to open the popup here...
<% } %>
-121--4435181-

32 файлы исходного кода с более чем 10K строками кода каждая. Каждая содержала по одному классу. Каждый класс содержал один метод, который делал «всё»

Это был настоящий кошмар для отладки этого кода, прежде чем мне пришлось его переформатировать.

-121--838893-

Я предполагаю, что вы используете CodeIgniter.

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

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

4
ответ дан 3 December 2019 в 14:43
поделиться

Если у меня есть строковые функции, я использую много, я должен поместить их в класс помощника или класс библиотеки?

Если они являются функциями, почему вы хотите придерживаться их в классе? PHP позволяет бесплатные плавающие функции.

1
ответ дан 3 December 2019 в 14:43
поделиться
Другие вопросы по тегам:

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