Jump to content
php.lv forumi

Ļoti vienkārša moduļu pievienošana/noņemšana.


iall

Recommended Posts

Labdien ,

vai kāds varētu dot kādu hintu kā varētu izveidot ļoti vienkāršu moduļu sistēmu? Pieņemsim - ir modulis 'Galerija' ,ir iespējas - 'Instalēt' ,'Atinstalēt'. Kāds varētu būt visvienkāršākais veids ko šādu uzveidot?

 

Paldies.

Link to comment
Share on other sites

tfu ,sarāja mani un viss.

nebuut ne, bet Delfins pareizi pateica, ka nevajag taisiit sistemu / instal/ uninstal --> nekas labs nebuus..

1. sarezgjiiti

2. pat vislabakaa sistema paliks lena :(

--

P.S. man teiksim ir izveidota sistema, kas ljauj pievienot moduljus... BET ierakstot ar rocinjam DB ... ( sk punktus augstak )

------

Link to comment
Share on other sites

moduļu sistēma kā tāda pati par sevi būs vienmēr lēna.

Tas tev nav nekāds runtime application, kur ielādē vienu reizi un viss. PHP jau katram requestam būs visa tā draza jāselektē + jālādē faili.

Protams faili vienmēr būs jālādē, bet tomēr, kad ir hardkods vismaz zini ko saukt un ko nesaukt. Modulārajam webam būs tā, ka ies pa blokiem un skatīsies uz ko viņš nomapots, tad konstruktori, argumentu parsēšana, html ievietošana templeitam un t.t. Tas pats, ko dara lielākā daļa CMS.

 

kaut gan, ja uztaisīsi normālu kešu un/vai engini - iespējams arī rullēs uz urrā.

Iedomājies situāciju, kad koderim uz kādu laiku iedot sekretāres funkcijas - ne viņš normāli pakodēs, ne viņš normāli atbildēs uz tel. zvaniem un beigās vispār aizies depresijā.

Link to comment
Share on other sites

Nu, skatoties, kas un kādā līmenī domāts ar to install/uninstall...

Ir tāda lieta, kā cfengine, piemēram, ar kuru var vadīt konfigurācijas pa daudziem serveriem, varbūt to var pielāgot arī skriptu instalēšanai/atinstalēšanai. Vēl visos Plesk'osutt ir kaut kādi forumu utt instalēšanas/atinstalēšanas skripti - varbūt var kaut ko tādu izmantot...

Link to comment
Share on other sites

Php darīt jo vienkāršāk performancei, jo labāk.

* Uztaisi vienkārši direktoriju modules (vēlams, ārpus web-root direktorijas).

* zem šīs direktorijas vari izveidot citas direktorijas, kas apzīmē moduļu grupas (pašam ērtības labad).

* zem attiecīgās moduļu grupas izveido moduļu direktorijas, lieto prefiksu, piemēram, mod_ vai module_

* šajās moduļu direktorijās ievieto modulim piederošos failus (organizācija un arhitektūra - cits jautājums).

* php pēc konkrēt moduļa pieprasījuma browsē modules direktoriju pa visu koku un meklē kur ir "module_"+$module direktorija ar inicializācijas failu. Ja tāda nav, atgriez false, null vai nu ko tev tur vajag - modulis neeksistē. Ja eksistē, lieto.

 

Ļoti vienkārši. Vari kaut vai katram modulim ievietot conf.ini konfigurācijai, ja vajag.

Link to comment
Share on other sites

P.S. Ieteiktu veidot katram modulim attiecīgā modules direktorijā inicializācijas failu pēc moduļa nosaukuma. Pieņemsim, modulis Galleries (ieteiktu arī lietot angļu valodu nosaukumos):

Galleries.php

-> iekšā klase

class Galleries extends Module {

... tamlīdzīgi.

 

Patiesībā pat iztiec bez tā prefiksa.

katrs direktorijs zem modules/, kur būs iekšā tāda paša nosaukuma moduļa fails ar paplašinājumu php un attiecīgo klasi iekšā, būs modulis. Mierīgi vari arī veidot apakšdirektorijās un sadalīt grupās.

Ir tikai viena problēma - kā nodrošināt direktorijas jeb moduļa nosaukuma unikalitāti. Pagaidām risinājumu vēl nezinu.

 

Edited:

Bet tomēr zinu risinājumu. Sistēma tev vienas direktorijas ietvaros neļaus nemaz izveidot divus direktorijus ar vienādiem nosaukumiem. Bet katru moduli tu atpazīsi php līdzīgi kā javā package - respektīvi - tas nosaukums būs unikāls tikai konkrētā direktorija ietvaros, tas tev netraucēs veidot vairākus galleries moduļus. Class konflikts? Vai php ir kāds risinājums kā to risināt? Varbūt saukt klases pilnā kokā kā nosaukumu? Nu arī variants, bet var padomāt vēl... Normāli būtu, ja klases būtu unikāla tikai konkrētā direktorija ietvaros, vai php klases ir unikālas global scope? Ja tā, tad tas "sux".

 

Tikko paskatījos, ka ar php5.3.0 būs pieejami "namespaces". Pagaidām gan šis php ir tikai Release Candidate, bet ja tas darbosies viss, tad nākotnē daudzas problēmas, tai skaitā šo, varētu ar namespeisiem atrisināt ;)

Edited by Web Developer
Link to comment
Share on other sites

Lielākā problēma jau nav nodrošināt klašu nosaukumu unikalitāti- par to lai rūpējas klases izstrādātājs.

Grūtākā/visvairāk resursus prasošā lieta ir tieši filtru/hooku/eventu sistēma- par piemēru ņemot tavu galeriju- vajag izdomāt, kā panākt, lai galerija tiktu piesaistīta konkrētai sadaļai, vai konkrētam post'am- galeriju vajadzētu arī apvienot ar content editoru- uzraksti tekstu, un ar vienu klikšķi tiec līdz attēlu upload'am/esoša attēla piesaistīšanai.

Ja nav visa šī, bet lietotājam ir jāmodificē source (vienas rindiņas pievienošana template failā vēl ir ok), tad īsti neredzu jēgu mocīties un taisīt moduļu instalāciju un pročaju figņu, ja tāpat tev pašam tas būs jāintegrē kodā, ko itin mierīgi var izdarīt attiecīgajā vietā inklūdojot un izveidojot savu objektu.

Wordpress'am šī sistēma ir diezgan pārdomāta- iesaku papētīt.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...