[php] Discussie : eigen 'platform' maken

Pagina: 1
Acties:
  • 194 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Dentist
  • Registratie: December 2000
  • Laatst online: 21-09 09:19

Dentist

Next patient please...

Topicstarter
Er is zich een idee in mijn hoofd aan het vormen en ik krijg het er niet uit. Het wordt me echter nog niet helemaal duidelijk, dus vandaar dat ik hier om hulp vraag.

Mijn eerste idee was om een soort 'persoonlijke web-assistant' te maken, een soort active-desktop, die vanuit elke willekeurige lokatie met een webbrowser te bereiken is. Een soort verzameling scriptjes (mail, agenda, document-management, groupware, etc) binnen een overkoepelende laag, die alles koppelt.

Toen kwam ik op het idee van de implementatie. Ik wil nl. niet zomaar wat scriptjes aan elkaar koppelen, maar het liefst zoveel mogelijk zelf schrijven, zodat het niet alleen maximaal geïntegreerd kan worden, maar ik ook zelf nog kan oefenen met het schrijven van dergelijke programmas. Ik heb enige ervaring, ik ben bijna klaar met de voltooiing van het ontwerpen/implementeren van een intranet-omgeving.

Wat ik echter wil is het volgende (en hier heb ik dus nog niet zo'n goed idee over) : Ik wil een basis-omgeving hebben, een soort platform, waarop ik eenvoudig 'modulair' functionaliteit kan toevoegen (een mailmodule, een agendamodule, etc). Op die manier zou een gebruiker dus simpelweg modules kunnen aanklikken, die vervolgens aan gezet worden.

Het voordeel daarvan is ongetwijfeld duidelijk, modules kunnen naadloos met elkaar communiceren en de schaalbaarheid/beheersbaarheid wordt danig vergroot. Echter, ik heb nog niet zo'n goed idee hoe ik zo'n platform dien te maken. Welke functionaliteit moet er in, hoe richt ik het in, hoe zorg ik ervoor dat mijn modules makkelijk geplaatst kunnen worden op een dergelijk platform, etc?

Ik heb het vermoeden dat ik ga willen dat in het platform de data-opslag geregeld moet worden (xml, sql, bestanden), de communicatie tussen modules en nog wat meer, maar hoor graag tips.

Verder zit ik te twijfelen of ik bijvoorbeeld een loginsysteem in het platform wil hebben, of daar een aparte module voor moet schrijven (zodat mensen een eigen login-functie zouden kunnen schrijven).

Sorry dat ik misschien wat vaag ben, het idee is in m'n hoofd nog niet volledig uitgekristaliseerd en ik ben dus nog bezig om dat eerst helder te krijgen. Daarna ga ik eerst een functioneel eisenpakket opstellen voor het platform en aan de hand daarvan ga ik per module verder..

Acties:
  • 0 Henk 'm!

  • PhoeniX-
  • Registratie: Juni 2000
  • Laatst online: 01-09 10:26
Ik heb inmiddels m'n gedachten voor iets soortgelijks uitgekristalliseerd :)

Mijn doel was meer gericht op het creeren van een uitbreidbaar/modulair cms achtig systeem, met een scheiding van presentatie, adminstatie, layout, content en code. Uiteindelijk was het doel dat elke leek in principe een site als een blokkendoos in elkaar kan klikken. Uiteindelijk moet de leek toch best wel wat van het geheel begrijpen :)

Ik heb functionaliteit opgedeeld in classes, en elke class heeft dezelfde set standaard functies (render, edit, save en delete), die worden aangeroepen door respectievelijk de frontend of backen.

Globaal is het idee als volgt (wat nogal moeilijk zo in een paar regels is uit te leggen :)):
Een pagina is gebaseerd op een layout (template), een layout heeft een aantal slots en aan elk slot is een 'view' te koppelen (en een view is weer gekoppeld aan een class, om meerdere views op de data mogelijk te maken).

Wat misschien een andere optie is, is dat je je bijvoorbeeld in een open source CMS verdiept (tikiwiki, typo3, of wat dan ook), en daarvoor je eigen modules gaat ontwikkelen .. dan ben je verzekerd van een goede basis.

Acties:
  • 0 Henk 'm!

  • dingstje
  • Registratie: Augustus 2002
  • Laatst online: 02-01-2024
Ikzelf heb ook zo'n 'platform' (ik noem het 'framework') geschreven. Alle pagina's worden via mod_rewrite naar een scriptje gestuurd die de juiste 'action handler' (klinkt stoer voor wat het is :-P) kiest en activeert. Alle action handlers hebben één method: Parse(). Die voegen de modules toe (via het framework), manipuleren data, stoppen de data in een template en gooien de template terug naar het framework. Op dat moment keert alles terug naar het scriptje waarin de action handler aangeroepen werd die de printOutput() method aanroept op het framework, waardoor alles naar de browser gestuurd wordt.

Ik heb *alles* modulair gemaakt. Mijn database class, mijn users class, ... zijn allemaal modules, behalve error handling, dat zit hardcoded in het framework (tsja, als ie modules niet kan vinden omdat de map niet bestaat, zou je in een infinite loop komen...).

If you can't beat them, try harder


Acties:
  • 0 Henk 'm!

  • Sike
  • Registratie: Juli 2001
  • Laatst online: 23-09-2022

Sike

Simply$ike | Nachtvlinder

Ben op het moment bezig met iets in deze richting alleen niet in PHP maar in ColdFusion op een mysql DB

De bedoeling is 1 user managment systeem te maken waaraan verschillende modules gekoppeld kunnen worden. BV weblogs, forum's, mail systemen etc.

Het idee onstond eigenlijk uit het probleem dat we hier op de zaak steeds meer kleine zelfgeschreven k** web-applicatietjes (urenreg, offerte systeem en bovengenoemde) hadden, waarvoor we allemaal apparte logins hadden..... mniet echt handig. Nu heb ik alle applicatietjes bij elkaar geraapt en ben ze volledig aan het herschrijven.

Probleem hierbij is wel dat alle data die nu in de DB staat bewaard moet blijven en weer gebruikt moet worden. Best een bult werk maar wel leuk :)

Het leuke is dat als het uiteindelijk klaar is je veel makkelijker applicaties ervoor kunt bouwen omdat je een hoop werk al klaar hebt en het los "schroeven" is ook niet moeilijk als het goed is ;)

snachts werkt alles beter .....


Acties:
  • 0 Henk 'm!

  • Dentist
  • Registratie: December 2000
  • Laatst online: 21-09 09:19

Dentist

Next patient please...

Topicstarter
dingstje schreef op 17 maart 2004 @ 16:27:
Ikzelf heb ook zo'n 'platform' (ik noem het 'framework') geschreven. Alle pagina's worden via mod_rewrite naar een scriptje gestuurd die de juiste 'action handler' (klinkt stoer voor wat het is :-P) kiest en activeert. Alle action handlers hebben één method: Parse(). Die voegen de modules toe (via het framework), manipuleren data, stoppen de data in een template en gooien de template terug naar het framework. Op dat moment keert alles terug naar het scriptje waarin de action handler aangeroepen werd die de printOutput() method aanroept op het framework, waardoor alles naar de browser gestuurd wordt.
En hoe zorg je ervoor dat de verschillende modules met elkaar praten? Ik wil bijvoorbeeld dat straks een adressenboek naadloos integreert met het emailsysteem, maar wil voorkomen dat beide modules 2x dezelfde functies gebruiken (binnen hun module). Ook weet ik niet of ik 'gemeenschappelijke functies' in het framework wil zetten, of in een functie-module..

Ik zoek nog een beetje naar de minimale functionaliteit van het framework als het ware.

Acties:
  • 0 Henk 'm!

  • PhoeniX-
  • Registratie: Juni 2000
  • Laatst online: 01-09 10:26
Dentist schreef op 18 maart 2004 @ 13:42:
En hoe zorg je ervoor dat de verschillende modules met elkaar praten? Ik wil bijvoorbeeld dat straks een adressenboek naadloos integreert met het emailsysteem, maar wil voorkomen dat beide modules 2x dezelfde functies gebruiken (binnen hun module). Ook weet ik niet of ik 'gemeenschappelijke functies' in het framework wil zetten, of in een functie-module..

Ik zoek nog een beetje naar de minimale functionaliteit van het framework als het ware.
In adresboek.php:
PHP:
1
2
$email = new emailSysteem();
$email->sendEmail($this->adres);

ofzo ?

Zo kan je gewoon functies aanroepen in andere modules waar nodig. Alleen moet je er wel rekening mee houden dat die functies van binnen en van buitenaf benaderd kunnen worden.
Voor functies die buiten een bepaalde klasse vallen heb ik utils.php, waarin standaard functies staan (deze class is voor elke andere class beschikbaar).

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:27

.oisyn

Moderator Devschuur®

Demotivational Speaker

dingstje schreef op 17 maart 2004 @ 16:27:
Alle action handlers hebben één method: Parse(). Die voegen de modules toe (via het framework), manipuleren data, stoppen de data in een template en gooien de template terug naar het framework.
Waarom noem je dat parse :? Wat wordt er geparsed :?
Ja sorry, beetje offtopic ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 18-09 12:47

killercow

eth0

ik ken 2 apps die aan jouw omschrijving voldoen;

Oeone.com homebase
Suse open exchange server (zeer lekkere web-demo.)

Bekijk ze eens en smul.

openkat.nl al gezien?


Acties:
  • 0 Henk 'm!

  • dingstje
  • Registratie: Augustus 2002
  • Laatst online: 02-01-2024
.oisyn schreef op 18 maart 2004 @ 16:27:
[...]


Waarom noem je dat parse :? Wat wordt er geparsed :?
Ja sorry, beetje offtopic ;)
Ik noem het Parse omdat het de beste naam was waar ik kon opkomen. Je zou kunnen stellen dat de argumentlist geparsed wordt en daaruit de juist gegevens op het scherm tovert (of beter, naar de base class stuurt).

En mijn modules werken als volgt samen:

PHP:
1
2
3
<?php
$base->addModule('dbconn'); // controle op dubbele modules hierin
$base->modules['dbconn']->RecordSet();


Ik moet nog een beetje nadenken of ik languages ook in een module prop of inbouw in de base class.

If you can't beat them, try harder


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:27

.oisyn

Moderator Devschuur®

Demotivational Speaker

dingstje schreef op 18 maart 2004 @ 21:16:
[...]


Ik noem het Parse omdat het de beste naam was waar ik kon opkomen. Je zou kunnen stellen dat de argumentlist geparsed wordt en daaruit de juist gegevens op het scherm tovert (of beter, naar de base class stuurt).
Dat is eigenlijk niet parsen, parsen is syntactisch analyseren, dus het opbreken van een geheel in componenten zodat het geanalyseerd en begrepen kan worden. Vandaar dat ik de vraag stelde ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • simon
  • Registratie: Maart 2002
  • Laatst online: 21-09 00:18
Ik gebruik ook zoiets dergelijks, maar dan voor mijn forum, er moet nog veel verbeterd worden, maar ik werk dus met een map met functies, die er 'in' geinclude worden :)

Werkt opzich erg makkelijk :)

|>


Acties:
  • 0 Henk 'm!

  • Dentist
  • Registratie: December 2000
  • Laatst online: 21-09 09:19

Dentist

Next patient please...

Topicstarter
Simon schreef op 18 maart 2004 @ 21:40:
Ik gebruik ook zoiets dergelijks, maar dan voor mijn forum, er moet nog veel verbeterd worden, maar ik werk dus met een map met functies, die er 'in' geinclude worden :)

Werkt opzich erg makkelijk :)
Ja ok, maar dat is gewoon gebruik maken van een functiebibliotheek. In mijn ogen is een framework/platform meer dan dat. Het zorgt voor een soort vruchtbare bodem waar je plantjes (je modules) in kan laten groeien. Via de bodem worden ze gezamelijk gevoed en kunnen ze met elkaar communiceren.

thx voor die webtip, ik ben zelf op het idee gekomen omdat ik veel met software van openIMS werk en zij werken volgens eenzelfde idee : http://www.openims.com/op...a41762a91eccd95756c18.php

Acties:
  • 0 Henk 'm!

  • PhoeniX-
  • Registratie: Juni 2000
  • Laatst online: 01-09 10:26
Wat vind / vond je van mijn opties Dentist? (just curious ;))
Pagina: 1