Apace - Ett MVC open source ramverk i PHP

PHPportalen Forum Index » Kolla hemsidan!
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
apacedev



Medlem i: 751 dagar

Status: Offline



#741524
Inlägg Skrivet: 2017-03-04 13:45      Ämne: Apace - Ett MVC open source ramverk i PHP Citera

Hej!

Det här riktar sig framförallt till er som är insatta i MVC ramverk i PHP eller till er som vill lära sig mer om det.

Jag har byggt ett MVC ramverk för utveckling av PHP applikationer med fokus på att förenkla vidareutveckling/utbyggnad av applikationer samt att dela data mellan flera olika applikationer. Ramverket heter Apace som betyder "fort" på svenska och är open source.

Det är för tillfället i BETA stadie och finns tillgängligt här: https://github.com/apacedev/apace .
För att installera ramverket är det bara ladda ner det från github och peka en virtual host mot ramverket i Wamp eller vad du använder. Följ instruktionerna som finns på Github. Det finns två defaut applikationer som följer med installationen från start, ap-admin och app, du kan göra vad du vill med dom, ta bort eller bygga på dom.

Ramverket består bland annat av:

- En enklare admin-del som är installerad från start
- Domainmapping vilket innebär att du kan koppla en eller flera domäner till en eller flera specifika applikationer i samma ramverk.
- Routing av URL'er för SEO-vänliga URL`er
- Automatisk minifiering av all HTML kod som genereras i webbläsaren för snabbare sidvisning
- Möjlighet att cacha genererat innehåll för snabbare sidvisning
- Plugins som man använder sig av genom att lägga in {{ myplugin }} i en view
- Flerspråkig applikation är installerad som default och behöver ingen övrig konfiguration
- Lokal och live konfigurationsfil som laddas automatiskt beroende på om du utvecklar eller applikationen ligger live
- En CLI som övervakar dina LESS och Javascript-filer och automatiskt kompilerar/minifierar filerna i realtid när du sparar en fil
- Färdiga funktioner för att förenkla kodskrivning som till exempel automatisk escaping av variabler, hämta data från databas och mycket mer. (Se på github)

Tack vare Cache funktionen och den automatiska HTML kompressionen är det möjligt att ladda en mindre sida med lite text, html och css på cirka 0.2 millisekunder (0.000219 sekunder).
På detta laddas ramverket på omkring 6 millisekunder.

Jag har jobbat i flera olika ramverk och oftast krävs det mycket konfiguration för att överhuvudtaget ha två applikationer i samma ramverk, till exempel en
applikation för en webbsida och en annan applikation för en admin-del.
Det resulterar i att:
1. Många installerar två olika versioner av samma ramverk, till exempel en installation för en vanlig webbsida och en annan installation för en admin-del,
vilket leder till att en uppdatering av ramverket måste ske på två olika platser och det är svårt att dela data mellan applikationerna.
2. Många använder samma applikation för två olika syften vilket resulterar i kaos-kod.

Apace bygger på "En kärna för alla applikationer" vilket innebär att du kan ha hur många applikationer/webbsidor du vill
placerade i samma ramverk utan någon övrig konfiguration. Det innebär att du enkelt kan dela data eller till exempel sessions mellan olika applikationer samt att uppdatering
av ramverket sker på en plats, eftersom alla applikationer använder samma kärna. Din kod blir dessutom mycket mer strukturerad och dina applikationer enklare att vidareutveckla.

Hur fungerar det?

Detta fungerar tack vare något jag kallar domainmapping, vilket innebär att du mappar ett domännamn till en av dina applikationer i Apace.
Det gör man genom att lägga till en rad text i en vanlig .ini fil i ramverket. Säg att du vill mappa domänen www.mysite.com till en applikation som heter "minapp".
Det hade sett ut såhär: www.mysite.com/ = "minapp".

I ren text ser det ut till exempel såhär:


Apace /
|----- application /
| |-------- admin <= http://mysite.com/admin/
| |-------- minapp <= http://mysite.com/
| |-------- anotherapp <= http://anothersite.com/
|----- data /
|----- engine
/


Det går att mappa både domäner och subdomäner och det krävs ingen övrig konfiguration för att använda sig av domainmapping.

Det är open source så vem som helst som är intresserad får gärna bidra till utvecklingen. Mer information och installationsinstruktioner finns på Github-länken jag skickade.
Ps. Det finns garanterat buggar i ramverket eftersom det är i beta-stadie.

Vad har ni för tankar och ideér kring detta?
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Skicka e-post Besök användarens hemsida
simius



Medlem i: 4636 dagar
Från: Skåne
Status: Offline



#741531
Inlägg Skrivet: 2017-03-06 19:23      Ämne: Citera

Personligen känner jag inte riktigt igen de problem som du pratar om när det gäller andra ramverk, men med det sagt så ser jag inga problem med att det finns fler, det är alltid kul när någon utvecklar något de vill ha som även ger dem det de vill ha!

Så, till mina tankar:
Jag kollade igenom koden lite och tycker att det i många fall ser rätt fint ut. Det är strukturerat och det känns som det är skrivet av någon som anser att kodstandard är en positiv sak!

Jag såg en del "require" calls i koden och det leder direkt in i min första fråga:

Fråga 1: Har ni tittat något på composer och hur det funkar? En auto-loader är väldigt trevligt att använda sig av i php då det ger ett mycket bättre flyt i utveckling och inte kräver att man tänker på var och hur man "require-ar" andra scripts.
Det finns mängder av composer-paket som kan vara bra att använda sig av eller bara kika på!

Utöver composer tankarna så såg jag ej heller någon "tests" folder, tester är ju såklart en smaksak till viss del men...

Fråga 2: Tester?! Smile
Som en användare så vill jag alltid ha möjligheten att se till att alla delar av ett lib eller ramverk är testat och "säkert", tester i form av enhetstester är därav något jag tycker är väldigt viktigt att se i ett projekt som skulle kunna ersätta något av de andra libs eller ramverk jag använder mig av.
Jag skulle helt klart föreslå att allt som är testbart skrivs tester för! Inte bara för de som ska använda produkten utan även för de som utvecklar den! Tester är guld värt när man väl har vant sig vid att skriva dem och arbeta med dem!

Det är vad jag kan komma på just nu att skriva, så hoppas det gav några positiva eller användbara pointers!
Lycka till med projektet!
 

_________________
Lägger jag en bild här igen blir jag avstängd.
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida MSN Messenger
apacedev



Medlem i: 751 dagar

Status: Offline



#741532
Inlägg Skrivet: 2017-03-06 21:35      Ämne: Citera

Tack för ditt svar och feedbacken!

Tanken med domainmapping är iaf att man enkelt ska kunna mappa domäner och subdomäner till olika applikationer i ramverket, det är en lite annorlunda approach mot vad jag sett tidigare då det ofta krävs en del konfiguration för att ha flera applikationer i samma ramverk, vilket kan vara lite knepigt för framförallt nybörjare. Men är man senior är det klart enklare att ordna.

Kul att du tycker det ser strukturerat ut, jag följer kodstandard i så stor utsträckning det går för att underlätta dokumentation och utveckling av ramverket.

Fråga 1:
Angående "require" calls i koden så använder jag en autoloader för ramverkets kärna (inklusive plugins) och alla Controllers/Models som utvecklaren skapar, så man behöver inte skriva några require själv när man utvecklar i apace. Autoloadern finns i engine/core/init.php och heter classAutoLoader. De require calls som finns är i index.php och används för att ladda autoloadern, samt i 'developmentenvironment.php' -filen eftersom developmentenvironment.php körs genom en CLI och inte via ramverket, så där måste jag ha require.

Men det är ju en bra idé att integrera composer i ramverket som default så man kan ladda externa libs i ramverket enkelt om det är det du menar?

Fråga 2
Jag har faktiskt inte kört några enhetstester än, men ska absolut överväga det. Som du säger, man kan ju inte lita på att allt bara funkar utan bevis. Smile

Och om någon är intresserad av att bidra till ramverket får den personen gärna göra det, med nya funktioner, tester eller vad som helst. Finns en del delar som kan utvecklas.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Skicka e-post Besök användarens hemsida
Tarre



Medlem i: 4984 dagar

Status: Offline



#741669
Inlägg Skrivet: 2017-05-06 11:30      Ämne: Citera

Hej!

Först och främst, förlåt för mitt missbruk av ordet "appar"...

En gång i tiden trodde jag också att jag ville skapa ett eget ramverk, efter ca 6 månaders if satsande så insåg jag att jag tagit helt fel väg och det var bara att skrota projektet, detta tar rätt hårt på en, så gör rätt från början!

Här är några få av flera tusen saker jag kan tänka på när det kommer till ramverk, i osorterad ordning


* Det finns en anledning till att både Laravel och RubyOnRails är så lika, de talar samma språk, även om de är skrivna i olika språk.
* Tanken att man ska hosta alla sina "appar" under samma mapp kanske känns bra, men i själva verket skapar det mer problem än vad det löser. Ett exempel är om du har 200 sidor under ditt ramverk och du vill ta bort / ändra en funktion, då måste du manuellt ändra alla sidor som använder sig utav denna funktion, i samband med detta så bör du också följa Semantic Version Control.
* Composer, Composer, Composer, Composer, Composer. Om jag vill använda flera PSR-4 verktyg tillsammans med ditt ramverk, så kan jag inte göra det utan att implementera auto-loadern själv.
* Det händer lätt att man tänker egoistiskt när man skapar egna ramverk, visst, ditt ramverk är byggt runt MVC designmönstret, men, egentligen, varför? hur gör jag om jag vill bygga en REST-api med ditt ramverk? det kan jag göra, men då måste jag ändra core-funktionalitet och då förstörs hela konceptet
* Ge möjlighet, tvinga inte, Lås inte utvecklaren till vad du tycker är bäst
* Använd php 7>, det finns ingen anledning till att tänka bakåt när man skapar ett nytt ramverk år 2017
* Ordet ramverk har definitionen "an essential supporting structure of a building, vehicle, or object.", det är viktigt att man förstår innebörden av ordet
* Titta på Lumen, Laravel och Ruby on rails, de är opensource, du får lov att ta inspiration.

Ha det gott
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » Kolla hemsidan!
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic