Отложено натоварване на изображението - мързеливи зареждания за WordPress. Най-добрият начин за разрешаване на плъгини за PHP приложение Slugish Plgin PHP

  • 20.06.2020

Функционален файл - забавен асистент при разширяване на функционалността на сайта! Всъщност, ако се използва за предназначение, обаче, много собственици на блог / сайт чудесно обръщат функциите.php до екипа на Solonka.

Във всеки случай има осъществимост и ограничения (ограничения, по-често логични) и следователно някакъв изпълним код, предназначен да коригира параметрите на WP Kernel (не темата), по-правилно от шаблона ...

Когато разговорът е върху модернизацията на функционалността на сайта, в състава на статии "без приставки ..." със сигурност съветва да се избута всички блокове в легендарните функции.php. Не е правилно!

Всички чисто технически разширения (които не са свързани с пряко шаблона на стила), е по-логично, за да се прехвърли, организирана за тяхната регистрация.

Създайте го! И таван за предимствата и минусите (Koim е значително по-малко) ...


Секции Статии:

как да създадете вашия плъгин

в текста по-долу, ние се научаваме как да създадем свой собствен плъгин като ръка: сделка във всички детайли, нюанси. Ние научаваме какви са плюсовете и минусите (минус са по-малко !! и по-скоро, не е в неравностойно положение, а една или друга осъществимост за всеки администратор)

каква е разликата между файла functions.php от плъгина

Защо някой код е свързан директно към функционалността на сайта, да се прехвърли към отделен плъгин?

Най-функционален файл, неговата цел и външен вид не се различава от плъгина (просто - плъгинът в темата))! - основната му задача е да обогати полезната функционалност (активен) шаблон.

Например, "навигация", където логично, менюто на бутоните е декорирано CSS, съответно, стилът на активната тема - може да бъде по-правилно да се остави в корена на шаблона.

Каква е ползата - разделяйте файла с функциите, за да отделите файлове или отделен плъгин?

Например най-банално - решите да промените шаблона!? ... Като резултат - всички функционални разработки ще изчезнат, защото целият полезен код се намира в файла с функции (видях такъв размер на файла 750klo)

Разбира се, можете да прехвърлите документация на функции на нова тема, но - чашата на всичко, без редактиране, което отнема много полезно време, не може да направи: маймуна и работа)

И тогава:

изтегляне на файла на сайта

КРАТКО: Процедурата за изтегляне на сайта Kernel файлове в нашия пример е активният сайт плъгини (от папката на плъгините) и тяхното съдържание, и след това се обработва файлът FORUTIONS.PHP със съдържание. Всичко е милисекунди и е малко вероятно да има сериозно говорене за спечелването на скоростта на страниците.

Въпреки че изглежда, че една от причините за такъв ред на зареждане, инсталиран от разработчиците, където второто място е присвоен на файла с функции (като вероятно По-лесно елемент), само факта на широкото използване на плъгини, често масивно съдържание ...

Някой възкликна: друг плъгин ...? това е трудно!

И аз казвам, че без скорост няма да повлияе ... по-скоро, напротив, ако е замислен да създаде сайт.

Освен това, ползата от прехвърлянето на някакъв код е очевидна в другата, а именно скоростта на зареждане на сайта зависи от броя на активните плъгини, но от тяхното съдържание! Така че защо да не намалите функционалния файл, който, както е споменато, се зарежда малко по-късно ..? И освен това, това е пълноценно ниво на масивен шаблон! Къде е мястото на по-голямата част от кода му?

Според мен (активен, работен) шаблон трябва да съдържа само параметрите си по-конкретно.

екскурзия до аритметика ...

  1. по-късно се зарежда по-късно, защо не се прехвърля, когато обработката на кода се извършва предимно и съответно, зададена от администраторите на параметрите на WP ядрата, ще се четат по-бързо и ще се обработват на съответния етап от стартирането на сайта.
  2. прословутата осъществимост и логическа организация на функционалността на обекта.
  3. удобства, които не са важни!

В допълнение, както беше казано, функциите файлът е същият плъгин ", аз ще попитам отново, защо всичко, което в Него да го избута? И в процеса на работа със сайта, объркан в огромен, трудно да се чете документът, който между другото е невероятно и неоправдано ще се справи със съдържанието му.

Това е по-лесно и по-логично, за да създадете лек плъгин, настроен и да забравите ...

Накратко, всеки решава: да слушате своя опит или на мнението на автора на някои тренировъчни статия.

След това следва библиотеките на WordPress, но не от статии ... от статии е възможно да се направи само една идея ...

По някакъв начин тук)

... за тези, които се интересуват от:

разгледайте всички правила на ядрото (и между другото, очертаването на товарещите директории)) може да бъде чудесно в WordPress кодове.

... в един от следните статии просто такъв мач! ... и връзки към полезни страници.


.. Подписване на уебсайт за актуализации -
... Разбийте с невежество ..!

как да създадете плъгин на допълнителни файлови функции.php

Посоченият плъгин, разбира се, е просто решение, но проучването трябва да започне от Азов!

Освен това, за постигане на целите, взети в статията, не се нуждаят от мощни плъгини!

Отиваме в хостинг панела на хост (или FTP инструментите) Отворете файловия мениджър.

Отворете папката Plugins и създайте друга директория в нея (папка за файлове на нашия плъгин). Името е абсолютно всяко, на латински. Имам името "тест" като пример.

Моля, обърнете внимание, че името на Admin admin ще бъде такова, което е написано в приставката: заглавие на тестовата информация (виж коментарите).

Отворете създадената папка и създайте файла Master Plugin в него:

... с заглавието, кажете моите функции.php и донесете такива редове в тялото му (и името на файла може да бъде абсолютно никаква)

Редове в коментари - информация за приставката, която ще се появи в администраторския панел (меню plug-in).

Веднага след създаване на папка и файл, вашият плъгин ще се появи на администратора. Виж.

Като EXE можете да го активирате за известно време - но нищо не се случва, плъгинът все още неактивен.

Това е всичко!! Беше създаден прост плъгин и забележителен, със собствените си ръце за собствена употреба (както казваше котката на Matroskin).

На тази завеса на презентацията намалява ...
... рампи прах тъжен е ...

Но между другото и полезно кино от телевизионния сериал "без приставки" - виж, помислете дали кодът е предложен във видео кода в файла с функции?

Със сигурност многократно се срещате, че трябва да добавите някакъв код за вашия сайт на WordPress, за да добавите нова функционалност. Сега говоря сега не за скриптовете на Google анализатори, които вмъквате в заглавната част на вашата тема. Не. Аз съм за тези малки фрагменти от кода, който сте намерили на форумите в интернет и веднага се затича да ги добавите към файла си functions.php..

Нека бъдем честни, защото поне веднъж сте го направили? И това е разбираемо, защото е написано на форума - добавете този код в функции.php вашата тема на WordPress.

Истината е, че добавяте всеки интернет, намерен код в функции.php - не винаги добра идея. По-безопасно решение ще създаде вашия персонализиран мини плъгин с този код.

В този урок ще кажем, в какви случаи можете да добавите код към функциите.php, и в който е по-добре да използвате отделен плъгин. Ние също така показваме как можете да създадете персонализиран плъгин и да добавите вашия код към него.

Какво е функции.php.

Ако някога сте се изкачили по файловете на вашия сайт на WordPress, можете да се спънете в няколко функции.php файлове. Функции.php Файлът, за който ще говорим в този урок, са в папката: WP-Contenthemesbach_memfunctions.php.

Очевидно е, че това е самият файл, който съхранява всички функции и настройки за вашата конкретна тема, в момента. Обърнете внимание на думата "активна", защото в това и ще има основно послание на този урок.

Защо винаги използвате функции.php е лоша идея

Не разбирайте неправилно, използвайте функции.php за малки части от код в няколко линии - това е напълно нормална ситуация. Ние говорим за това дали е нежелано да използвате функции.php като склад за абсолютно всички добавени, които добавихте. Това не е универсално решение за всяка ситуация.

Причина №1.

Ако се покаже актуализация за вашата тема за проектиране, ще загубите всичко, което добавите в файла functions.php. Знам какво мислите просто - но това е само за такива ситуации?

Разбира се. Но има и много хора, които нямат представа каква е дъщерната тема. Или има хора, които се обърнаха към вас, за да добавите част от кода по темата им.

Ето защо, тази причина е в този списък. Ако добавите код към функции.php, без да използвате дъщерно дружество, това е първата ви тревожна звънец.

Причина # 2.

Дори ако зададете правилно и използвайте дъщерно дружество. Какво се случва, ако искате да отидете в друга проектна тема? Надявам се, че сте добавили коментар за всяка промяна във вашите функции.php файл, защото без това преходът към друга тема ще бъде изключително болезнен. Мисля, че си си помислил.

Причина номер 3.

Ако сте добавили код към function.php, който напълно неочаквано счупи сайта си напълно и виждате празен бял екран - ще ви е необходим FTP клиент, за да изтеглите "разглезени" функции.php, редактирайте го и ще изтеглите обратно на сайта. Удоволствието е себе си.

Когато можете да използвате функции.php

Правилното използване на функциите.php за дъщерно дружество, активно в момента е допустима опция. Но помнете, фокусирах се върху тази дума " активен"?

Ако добавите части от кода, който ще има смисъл само при работа с тази тема конкретно, тогава можете да използвате безопасно функции.php (в дъщерно дружество). Ето няколко примера, когато ще бъде подходящо:

  • Добавяне на друг стил на стил (.css) за вашата тема
  • Промяна на дължината на съобщението за запис (пост екскрия), така че сайтът да изглежда по-добре
  • Добавяне на персонализирани шрифтове за текущата тема
  • Добавяне на локализационен файл за превод на текущата тема

С други думи, всеки път, когато добавите или промените нещо, свързано с конкретна текуща тема, можете спокойно да използвате функции.php.

Когато е по-добре да се прави без функции.php

Използвайте функции.php, за да добавите повече глобални неща и функции, които теоретично могат да дойдат в удобни и за друга тема - това е лоша идея.

Ето няколко примера, когато е по-добре да се прави без функции.php:

  • Създаване на персонализирани джаджи, които често използвате
  • Създаване на потребителски късокодове
  • Добавяне на код, който не зависи от темата за регистрация (код на Google Анализ и др.)

В такива случаи е по-добре да запазите този код, независимо от темата за дизайна. И можете да го направите с персонализирани плъгини.

Мислили ли сте сега - прекъснете главата си над създаването на плъгин, когато можете да редактирате функции.php? Това е твърде трудно! Повярвайте ми, не е така. Това се прави много лесно и бързо.

Как да настроите персонализиран плъгин вместо функции.php

За да създадете персонализиран плъгин за съхранение на кода, трябва:

  1. Създайте текстов файл с кода си и го запазете като .fp файл
  2. Пакет Получен.php файл v.zip архив
  3. Задайте този архив като обикновен плъгин на WordPress в менюто Plugins → Добавяне на нов

Това е всичко, само 3 действия.

Стъпка 1. Създаване.php файл с кода си

Отворете Notepad на компютъра си и поставете следния текст:

Разбира се, можете да използвате името си за плъгин в името на приставката:

Запазете файла и го дайте някакво уникално име, така че WordPress да не обърка приставката ви с вече инсталирания. Например: wpcafe-custom-functions.php.

Да, не забравяйте, когато запазвате, за да изберете вида на файловете "Всички файлове" и добавете разширението.php:

Стъпка 2. Създайте.ZIP архив

Мисля, че тук няма обяснение. Просто създайте.ZIP архив с файла всеки удобен архиватор.

Стъпка 3. Инсталирайте като обикновен плъгин

Най-простата част. Просто отидете в WordPress Adminka Plugins → Добавяне на нов И да изтеглите архива си като най-обикновен плъгин.

Веднага след като го активирате, можете да видите новия си плъгин в списъка на всички други инсталирани плъгини:

Как да добавите кода си

За да добавите вашия код фрагмент, просто го поставете в файла.php, който сте създали. Или винаги можете да направите друг отделен плъгин за две различни функции.

Например, това ще изглежда като вашия файл.php, ако искате да направите кратък код "Hello World!":

Тези коментари не влияят върху изпълнението на вашия код и скоростта на плъгината. Но ще бъдете по-лесни за навигация с тях и не забравяйте, че това прави всяка функция, която сте добавили.

Просто обгърнете коментара си в синтаксиса от наклонени и звездички: /* твоят коментар */

След като направите промени в кода си, можете да рестартирате.php файла чрез FTP или просто да създадете нов one.zip архив и да изтеглите като нов плъгин и изтрийте старите.

Други начини за избягване на EDKes.php

Като цяло, ако сте сигурни достатъчно в способностите си и знаете как да добавяте код в функции.php, не трябва да имате трудности и с персонализирани плъгини. Тук няма нищо сложно.

Но ние разбираме напълно добре, ако нямате желание да се забърквате с всичко това ръчно. Въпреки това, това е WordPress. Затова можете да използвате приставката за безплатни кодове, което улеснява добавянето на допълнителен код към сайта:

С този плъгин можете да добавите различни фрагменти с кода, да им дадете името, описанието, да активирате и изключите избрания код на един или друг фрагмент.

Друга страхотна функция е, че можете да импортирате / експортирате кодовите фрагменти между сайтове.

Резултати.

Това може да изглежда незначителна дреболия, но правилното местоположение на вашия допълнителен код ще ви позволи да превключвате между други теми дизайн без никакви проблеми. Можете също така да включите или изключите една функционалност поотделно, ако разделите всяка допълнителна функция между отделните плъгини.

Така че, този метод наистина заслужава внимание.

cms mysql (4)

Опитвам се да създам основна плъгина система, подобна на това, което често намирате в CMS, като WordPress. Имате папка за приставка, която е свързана с основната система на системата, използвайки известия за събития S. Използване на дизайнерски шаблони Наблюдател. или Събитие .

Проблемът е, че системата не може да знае какви събития Приставката иска да действа - затова системата трябва да зареди всеки плъгин за всяка заявка за страница, за да разберете дали този плъгин наистина е наистина необходим в някакъв момент. От само себе си се разбира, че много ресурси са инвестирани - в случай на WordPress, който добавя към няколко допълнителни MB памет за всяка заявка!

Има ли алтернативни начини да го направите?

Например, има ли начин да изтеглите всичко това веднъж и след това да кеширате резултатите, така че вашата система да знае как приставки за мързеливи обувки? С други думи, системата зарежда конфигурационния файл, в който са посочени всички събития, че плъгинът иска да се свърже и след това ги спестява в APC или нещо за бъдещи искания?

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

Отговори.

Имам инструмент за управление на плъгин, но го използвам само с процедурни приставки и с всички включени обикновено се зареждат веднага. Но за API, въз основа на събития и мързеливо изтегляне, мога да представя с помощта на малки опаковки за контролиране на приставките и прибягването до автоматично зареждане за действителни разширения.

/ ** * API: каквато и да е * версия: 0.1 * Заглавие: Пример пример * Описание: ... * config: * Зависи: oddplugin * / $ plugins ["title_event"] \u003d "titleventclass"; $ plugins ["вторичен"] \u003d масив ("class2", "callback"); ?

В този пример приемам, че Plug-in API е прост списък. Този пример на скрипта на Plugin-123.php прави нищо друго, освен да добавите към масива при зареждане. Така, дори ако имате дузина плъгини, то само ще доведе до допълнително включване на всеки.

Но основното приложение / или plug-in api може вместо това просто да създаде случаи на споменатите класове (или нови $ eventcb; за Raw-call_user_func_Array или call_user_func_Array за повиквания). От своя страна, това ще доведе до товара на действителната задача на автомегача. По този начин имате двойна система, където една част контролира списъка, а другият е истински код.

По този начин, аз все още си представям прост config.php, който просто изброява приставките и настройките като тази:

"Потребител / обвивка-за-htmlpurifier.php"); $ Cfg ["pretty"] \u003d 1;

Отново, като се има предвид, че това е просто сценарии за черупки / данни, с описание на приставката за управляемост. Можете също така да използвате действителния регистър_евен () API и да дефинирате допълнителна функция на обвивката във всяка. Но списъкът с имена на класа изглежда като най-простата опция.

Гореспоменатият инструмент за управление изглежда ръждясал и грозен: http://milki.include-once.org/genericplugins/
Но не се използва, ако имате нужда само от списък (SQL таблица) и управление на настройките. Тези режийни разходи са предназначени само за красивото отпечатване на метаданните на Plug-in и запишете Config.php.

Накрая:

sPL_AUTOLOAD () В includ_path и просто събитие-\u003e Класнозапис, един скрипт-обвивка всеки, просто се превръща във всичко наведнъж.

Бих запаснал името на класа Plugin заедно с подписаните си събития в конфигурационния файл и след това например запазете анализирания конфигурационен файл в APC. След това, когато започне събитието, системата може да лези, за да зареди съответните класове плъгини, ако е необходимо.

WordPress и други CMS системи са много лоши примери.

Трябва да разберем, че модулната, почти винаги означава, че е по-трудно.

Най-добрата схема, с която някога съм работил за решаване на тази ситуация, е плъгин, основан на класа, със строго име на името, използвайки автомартона.

Така, преди да използвате плъгина, трябва да създадете инстанция или да използвате статични функции.

Можете дори да се обадите на плъгина:

например:

"/plugins/($parts)/($parts).php"); Почивка; ) // ...)?\u003e

Що се отнася до събития:

Трябва да регистрирате това събитие статично, за да избегнете динамична промяна.

Базата данни ще бъде правилното място за това. Можете да имате събития и да инсталирате () и деинсталиране () методи в класа Plugin, за да добавите определени събития или обвързващи методи към други събития. Това е една заявка към базата данни и ако искате да получите повече от него, добавете го към memcached или в плосък файл ini.

Работи добре за мен. Така успях да получа тежка система, която консумира 8 MB, за да поиска да падне до 1 MB, с точно същия списък с функции, без предварително кеширане. Сега можем да добавим повече функции и да поддържаме системата "чист"

надявам се това да помогне

Най-добрият начин е да започнете кодирането с тях. Дизайн шаблоните са отлична концепция, която е трудна за прилагане, просто ги четете. Вземете няколко примера за изпълнения, които откривате в интернет и създавате около тях.

Отличен ресурс е страницата "Данни и обект". Те разглеждат моделите и ви дават и двата концептуални и реални примера. Техният референтен материал също е чудесен.

Това е основният файл в темата на WordPress. Разположен в / WP-съдържание / теми / (тук е името на вашата тема) /функции.php.
Той определя важните свойства на темата, куките, външния вид и неговата функционалност са персонализирани и някои от функциите, от които се нуждаете. Този файл се зарежда всеки път, когато отворите всяка страница на WordPress, така че можете да промените всеки елемент от сайта с него. В това отношение много съвети A la " как да промените нещо в WordPress без приставки »Често се отнасят точно да правят промени в функциите.php, вместо да създават отделен плъгин към тази функционалност или да използвате готовия разтвор. Често това води до информационното претоварване на този файл, кодът става трудно да се разглобяват и е още по-трудно да се направят корекции. Но това не е най-опасното. Най-опасното е това когато проучване е променено, част или цялата необходима функционалност на сайта ще изчезне.

Каква е разликата между функциите.php от плъгина

. По същество функциите.php е един вид глобален отворен плъгин, който е свързан с текущата тема. Тъй като се свързва с WordPress, можете да видите WP-Settings.php. Както може да се види от изходния код, неговото изтегляне възниква след всички плъгини, но това не дава никакви недостатъци или предимства, с изключение на способността да се замени нещо в приставките. За скоростта на кода, той няма да засегне никого. Само съдържанието на плъгините и функциите.php засягат. Ето защо, бъдете внимателни, когато избирате активни плъгини за вашата тема и се откажете ненужно, ненужно за вас, тогава можете лесно да улесните сайта си и да ускорите работата му.

Когато трябва да използвате функции.php

Следвайте следното правило: ако функционалността е пряко свързана с текущата тема, но не и с работата на сайта, напишете го на functions.php.

Например, може да е

  • Задаване на миниатюра
  • Настройка на размери Schidbarov.
  • Задаване на местата за приспособленията
  • Обявяване на места за навигационно меню
  • Настройки на темите
  • Допълнителни функции на вашата тема

Кога да избягвате използването на функции.php

Ако функционалността трябва да работи дори с промяна на активна тема, си струва да се грижим за подаването му в отделен плъгин.
Това може да се припише:

  • Определяне на участието на участието (Google Analytiys, Yandex.metrika, LiveInternet)
  • Регулирайте допълнителната функционалност на администратора (например)
  • Конфигуриране на изходния код ()
  • Определение на късокодовете
  • чест

Непълни списъци, можете сами да определите тяхното съдържание.

Къде да направите този код, ако не е в функции.php? Можете да им пишете специални приставки, но има по-интересно и по-лесно.

mU-плъгини като алтернатива на функциите.php

За нас в съвременните версии на WordPress от WordPress MU (Multi-потребител) дойде интересна функционалност, наречена Mu плъгини.. Неговата същност е както следва. Администраторът на WordPress MU понякога се изисква да дефинира плъгините за цялата мрежа от сайтове. Не беше възможно да се постигне обичайната функционалност, така че те въвеждат специален разрез: / WP-съдържание / MU-плъгини /, където са определени. Друга интересна, плъгина файлове от тази директория са заредени преди всички останали, което дава възможност да се предопределят някои константи или настройки.
По-късно WPMU премахна, кодът му е интегриран с главния блог, а сега всяка дума може да използва функционалността на MU-плъгините, която сега е дешифрирана като Трябва да използвате.това е задължително за употреба.

Как да използвате MU-плъгини

Първо трябва да създадете специален раздел / WP-съдържание / MU-Pugins /
В него поставяме желаните файлове за приставки. За разлика от конвенционалните плъгини, не е необходимо да издържат на специален синтаксис и функционалността може да бъде обявена директно

Тук например е създаден файл с кодекса за участие в броячите.
Вътре в този файл изглежда така

// ... вместо тази линия, поставете кода на броячите ...

В администратора той ще изглежда Необходимо

8 отговора

Можете да използвате шаблона на наблюдателя. Прост функционален начин за изпълнение на това:

Изход:

Това е моето луд приложение 4 + 5 \u003d 9 4 * 5 \u003d 20

Забележки:

В този пример, изходният код, който трябва да декларирате всичките си приставки преди действителния изходен код, който искате да разширите. Включих пример за това как да се справя с една или повече стойности, предавани от плъгина. Най-трудната част от това е да напишете действителната документация, която изброява кои аргументи се предават на всяка кука.

Това е само един начин за създаване на система за приставка в PHP. Има най-добрите алтернативи, предлагам ви да се запознаете с WordPress документация за повече информация.

Съжалявам, изглежда, че долнитечките се заменят с HTML маркистни обекти? Мога да публикувам отново този код, когато тази грешка ще бъде фиксирана.

Редактиране: nevermind, тя се появява само когато редактирате

Така че, да кажем, че не се нуждаете от наблюдател, защото той изисква да промените методите на класа, за да се справите с задачата за слушане и искате да получите нещо общо. И да кажем, че не искате да използвате, разширява наследството, защото вече можете да наследите класа си от друг клас. Би било хубаво да имате общ начин да направите всеки клас, свързан без много усилия? Ето как:

_Class \u003d get_class (& $ Refobject); $ this -\u003e _ Refobject \u003d $ Refobject; ) Обществена функция __set ($ spoperty, $ mixed) ($ splugin \u003d $ this -\u003e _ клас. "_". $ Sproperty. "_Setevent"; ако (is_callable ($ schelugin)) ($ mixed \u003d call_user_func_ward ($ skewine, \\ t $ смесен)) $ това -\u003e _ refoobject -\u003e $ sproperty \u003d $ смесен) публична функция __get ($ sproperty) ($ AsiTems \u003d (Array) $ това -\u003e _ refoobject; $ смесени \u003d $ AsiTems [$ sproperty] ; $ sPLUGIN \u003d $ това -\u003e _ клас "_" $ sproperty "_getevent"; ако (is_callable ($ splugin)) ($ смесени \u003d call_user_func_array ($ splugin, $ смесен);) Връщане $ смесен;) публично... функция __call ($ Smethod, $ Смесен) ($ splugin \u003d $ това -\u003e _ клас "_" $ SMETHOD "_BeForeEvent";... ако (is_callable ($ splugin)) ($ смесена \u003d Call_user_Func_Array ($ splugin, $ Смесен )) ако ($ смесена \u003d "block_event") (call_user_func_array (масив (& $ -\u003e _ refoobject, $ smethod!), $ смесен); $ splugin \u003d $ това -\u003e _ клас "_" $ sMETHOD... "_Afterevent", ако (is_callable ($ Splugin)) (Call_user_Func_Array ($ Splugin, $ Смесен))))) // END CLAS приставката CLUGGABLE РАЗШИРЯВА приставката () // END КЛАС PL uggable ///////////////// // //////////////// ////////////// ///////////////// // Име \u003d ""; Обществена функция BARK (& $ show) (echo "$ show
n ";) публична функция sayname () (echo"
Името на nmy е: ". $ This-\u003e име."
\\ П ";)) // Край клас куче $ куче \u003d New куче (); ///////////////// // // част 3 //////// //////////// $ pdog \u003d нов щепселно ($ DOG); Функция Dog_bark_beforeEvent (& $ Смесен) ($ Смесени \u003d ""; вътъка // Замяна казва "мяу" с "вътъка" / / $ смесен \u003d "block_event"; // ако искате да блокирате връщането на събитието $ смесен) Функция Dog_Bark_Afterevent (& $ смесен) (Echo $ смесен; // покаже замяна) функция Dog_name_seTevent (& $ смесени) ($ смесени \u003d "Coco"; // замяна "Fido" с "COCO" връщане $ Смесен) Функция Dog_Name_GeTevent (& $ Смесен) ($ смесена \u003d "различни"; // Замяна "Coco" с "различни" Връщане $ Смесен) / //////////////// // ////////////////////// $ PDOG-\u003e NAME \u003d "FIDO"; $ Pdog-\u003e bark ("meow"); $ pdog-\u003e sayname (); echo "Моето ново име е:". $ Pdog-\u003e име;

В първата част, която можете да активирате с повикването на заявката_ONCE () в горната част на вашия PHP скрипт. Зарежда класовете, за да направи нещо свързано.

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

В част 3, където сменяме класа си към "свързан" (т.е., ние поддържаме плъгини, които ни позволяват да заменим методите и свойствата на класа). Така например, ако имате уеб приложение, можете да имате регистър на плъгините и можете да активирате приставките тук. Забележка също върху функцията DOG_BARK_BEFOREEVENT (). Ако инсталирам $ mixed \u003d "block_event" пред оператора за връщане, той ще блокира кучето от Laya и също така блокира dog_bark_fterevent, защото няма да има събитие.

В част 4, този нормален оперативен код, но имайте предвид, че това, което може да мислите, няма да работи. Например, кучето не го декларира с името "Fido", но "Коко". Кучето не казва "мяу", но "струва". И когато искате да видите името на кучето по-късно, ще откриете, че той е "различен", а не "coco". Всички тези заместващи са представени в част 3.

Как работи? Е, нека изключват оценката () (които всеки казва "зло") и изключва, че това не е модел на наблюдателя. Така, начинът, по който работи, е скрит празен клас, наречен плътен, който не съдържа методи и свойства, използвани от класа на кучета. Така, както се случва, магическите методи ще бъдат включени за нас. Ето защо, в части 3 и 4, ние комуникираме с обекта, получен от класа, а не с класа на кучетата. Вместо това, ние позволяваме на класа на плъгин "докосване" на обекта на кучето за нас. (Ако това е някакъв дизайн, който не знам - уведомете ме.)

Методът на куката и слушателя е най-често използван, но има и други неща, които можете да направите. В зависимост от размера на вашата кандидатура и който иска да види кода (това ще бъде скрипт на FOSS или нещо в къщата) ще повлияе значително как искате да разрешите плъгините.

kdeloach има приятен пример, но функцията за изпълнение и кука са малко опасни. Бихте помолили да дадете повече информация за характера на PHP приложенията за вашето писмо и как виждате плъгините.

1 до Kdeloach от мен.

Ето един подход, който използвах, е опит за копиране от QT сигналите / прорезите от QT механизма, един вид шаблон за наблюдение. Обектите могат да излъчват сигнали. Всеки сигнал има идентификатор в системата - той се състои от идентификационен номер + обект-подател. Всеки сигнал може да бъде свързан с приемник, който е просто "наречен", използвате класа на гумите, за да предавате сигнали на всеки, който се интересува от получаването когато нещо се случи, изпращате сигнал. По-долу е даден пример и пример за изпълнение.

влизане (); ?

Вярвам, че най-лесният начин е да следвате съвета на Джеф и да погледнете съществуващия код. Опитайте се да видите WordPress, Drupal, Joomla и други известни PHP-CMS, за да видите какви интерфейси на API изглеждат и чувстват. Така можете дори да получите идеите, които може да не сте мислили преди да направите нещата малко по-дебели.

По-пряк отговор би бил да се пишат общи файлове, които те ще бъдат включени в файла, за да осигурят лекота на използване. Тя ще бъде разделена на категории и не е предоставена в същата масивна файл "Hooks.php". Бъдете внимателни, защото това, което краищата е, че файловете, които включват в крайна сметка, имат повече и повече зависимости и функционалност. Опитайте се да ограничите API за прилагане. I.e по-малко файлове за тяхното включване.

Нарича се чист проект