• Login
  • Register
  • Zoek
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Filebase Entry
  • More Options

ICTscripters

Dé plek voor IT

Dé plek voor IT

Login

Geavanceerde opties
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Dé plek voor IT - ICTscripters
  2. Forum
  3. Overig
  4. Check-Me

Forum

  • Beta-testers gezocht voor Crypto-oefenplatform

    Syntax 29 januari 2026 om 16:11
  • Na 15 jaar terug van weggeweest: iCriminals.nl is terug (BETA)!

    Syntax 19 januari 2026 om 09:34
  • Developer Gezocht

    Mikevdk 10 januari 2026 om 18:57
  • Op zoek naar de legends

    Syntax 5 januari 2026 om 13:50
  • [FREE] WeFact Hosting module

    Jeroen.G 13 oktober 2025 om 14:09
  • Help testers nodig voor android app Urgent

    urgentotservices 26 september 2025 om 10:21
  • Versio vervanger

    Jeroen.G 25 augustus 2025 om 15:56
  • Afspraken systeem met planbeperking

    Lijno 1 augustus 2025 om 23:04

Marktplaats

  • 350 Nieuwe Domeinnamen Januari 2026

    shiga 1 februari 2026 om 14:21
  • 321 Nieuwe Domeinnamen December 2025

    shiga 1 januari 2026 om 10:26
  • Meerdere mafia game template te koop

    Syntax 26 december 2025 om 00:07

Delicious Framework

  • M.Beers
  • 29 juli 2013 om 22:22
  • M.Beers
    Elite members
    Ontvangen Reacties
    31
    Berichten
    460
    • 29 juli 2013 om 22:22
    • #1

    Beste ictscripters,

    Ik ben al een tijdje bezig met een framework en nu is de eerste versie af. Nu vroeg ik me af of jullie deze willen testen, dit gaat met name om de routing en installatie op de server omdat ik hier de meeste problemen verwacht. Verder verwacht ik zoveel mogelijk kritiek + feedback om het te verbeteren!

    Linkje naar mijn Git-project

    Ter info omdat de README nog niet af is:
    Het framework is alleen voor php 5.3 of hoger!
    De public_html map is de ROOT van je webserver, de inhoud moet je plaatsen in je public_html of www map dit is per server verschillend.
    De library map één map onder de public_html zodat het hetzelfde is als de huidige structuur, deze is dus NIET via de URL te benaderen.

    Let op! deze versie bevat nog geen resources alleen een kleine hello world applicatie...

    Huidige bugs:
    Geen bugs

    Alvast bedankt!

    Met vriendelijke groet,

    Michael

    Dit was mijn spreekbeurt, zijn er nog vragen?

    Bewerkt 2 keer, laatst door M.Beers (5 augustus 2013 om 17:45).

  • baldex
    Chocolate man
    Berichten
    517
    • 30 juli 2013 om 08:23
    • #2

    ziet er leuk uit ik zal er binnenkort naar kijken

    Met vriendelijke groet,
    Andrew Osenga

  • Tredgy
    Developer
    Ontvangen Reacties
    1
    Berichten
    192
    • 30 juli 2013 om 13:27
    • #3

    Wat je met de error logs heb gedaan is leuk, maar noem dit niet echt een framework omdat je error reporting en een auto-load erin hebt gezet. beetje zonde om het te plaatsen als je alleen nog de "Hello World" hebt.

    Met vriendelijke groeten,
    Tredgy

  • M.Beers
    Elite members
    Ontvangen Reacties
    31
    Berichten
    460
    • 30 juli 2013 om 14:00
    • #4

    Tredgy De resources komen in de volgende versie, eerst moet dit goed getest worden zodat het werkt op meerder servers ;)
    Verder maak ik nu 1 topic aan die ik gewoon bump zodra er een nieuwe versie komt stuk efficiënter denk ik zo.

    Maargoed bedankt voor het testen alvast, ik ga nu beginnen met resources als de database, modellen, templates, sessions, security etc.

    Edit:

    Update aan het framework gedaan:
    05-08-2013 - Resource loader toegevoegd
    05-08-2013 - Basis view class toegevoegd

    Coming up next:
    - Basis caching
    - Template + layout class
    - Database class
    - ORM class (Object-relation mapping)

    Dit was mijn spreekbeurt, zijn er nog vragen?

    Bewerkt één keer, laatst door M.Beers (5 augustus 2013 om 17:58).

  • Stefan.J
    Master
    Ontvangen Reacties
    9
    Berichten
    2.358
    • 12 augustus 2013 om 17:44
    • #5

    Ik heb op GitHub zojuist je project bekeken. Enkele dingen vallen mij op:
    - Je begint je class JavaDoc altijd met de naam van de class. Dit is overbodig, exporteer de JavaDoc maar eens met PHPDoc.
    - Je hebt common functies. Waarom zitten deze functies niet in de correcte classes?
    - Je gebruikt een underscore als prefix voor private (en protected?) velden. Waarom doe je dat? Heeft het echt toegevoegde waarde?
    - Meerdere classes zijn singletons in je framework. Negen van de tien keer heb je singletons helemaal niet nodig. In jouw geval denk ik ook niet. Singletons hebben veel nadelen.
    - Waarom is een Controller een ResourceLoader? Die link zie ik niet, volgens mij is dat een fout in je architectuur.

    Ik zie overigens wel dat je niet maar zo iets doet, en wel degelijk kan programmeren. Doe je ook een opleiding zoals Informatica of hobby je alleen?

    De beste toevoeging die je naar mijn mening kunt doen, is dependency injection. Dat maakt het hele boeltje een stuk overzichtelijker.

  • M.Beers
    Elite members
    Ontvangen Reacties
    31
    Berichten
    460
    • 12 augustus 2013 om 23:23
    • #6

    Je begint je class JavaDoc altijd met de naam van de class. Dit is overbodig, exporteer de JavaDoc maar eens met PHPDoc.
    Hier heb ik nog geen prioriteit aan gesteld dus word later gewijzigd :) evengoed bedankt voor de opmerking.

    Je hebt common functies. Waarom zitten deze functies niet in de correcte classes?
    Geen idee eigenlijk, momenteel nog niet echt naar gekeken omdat deze geen prioriteit hadden en simpel te vervangen zijn.

    Je gebruikt een underscore als prefix voor private (en protected?) velden. Waarom doe je dat? Heeft het echt toegevoegde waarde?
    Is natuurlijk geen toegevoegde waarde, meer een herkenningspunt voor mezelf en niet echt storend ofzo.

    Meerdere classes zijn singletons in je framework. Negen van de tien keer heb je singletons helemaal niet nodig. In jouw geval denk ik ook niet. Singletons hebben veel nadelen.
    Dit zijn momenteel 2 classes, hier heb ik voor gekozen omdat je deze echt maar 1x gebruikt binnen het hele framework, namelijk de URL Request en de Routing van de URL Request. Hier heb ik een tijd over getwijfeld dus ik ga dit nog herzien.

    Waarom is een Controller een ResourceLoader? Die link zie ik niet, volgens mij is dat een fout in je architectuur.
    Momenteel is dit nog apart omdat ik misschien ook mijn basis Model toegang wil geven tot de Resources vandaar een extensie met een Resourceloader.

    Verder doe ik een informatica opleiding, net het 2e jaar pas. Wat wordt er met dependency injections bedoelt, interfaces enzo?

    Dit was mijn spreekbeurt, zijn er nog vragen?

  • Stefan.J
    Master
    Ontvangen Reacties
    9
    Berichten
    2.358
    • 12 augustus 2013 om 23:33
    • #7

    Aha, op welke hoge school zit je?

    Dependency injection staat in principe los van het gebruik van interfaces. Misschien kun je wat rond kijken op het internet voor informatie? Mocht je er vragen over hebben hoor ik het natuurlijk graag.

    Goed dat je de feedback positief oppakt!

  • M.Beers
    Elite members
    Ontvangen Reacties
    31
    Berichten
    460
    • 12 augustus 2013 om 23:35
    • #8

    Ik zit op de HvA

    Edit: Ik ga zeker even zoeken want ik heb hier weinig van gehoord nog...

    Dit was mijn spreekbeurt, zijn er nog vragen?

    Bewerkt 2 keer, laatst door M.Beers (12 augustus 2013 om 23:49).

  • Stefan.J
    Master
    Ontvangen Reacties
    9
    Berichten
    2.358
    • 13 augustus 2013 om 12:46
    • #9

    Aha, ik ben zelf bijna klaar en zit op de HAN. Over twee weekjes studeer ik als het goed is af. :)

    Dependency injection houdt in dat alle benodigde dependencies voor een class worden ingeladen door een dependency injection container. In jouw geval maakt je Dispatcher bijvoorbeeld gebruik van het Request object. Je zou dan in je code de dispatcher opvragen uit de context, bijvoorbeeld:

    PHP
    $context->getObject('Dispatcher');

    De dispatcher heeft vervolgens de volgende constructor:

    PHP
    class Dispatcher {
    
    
      private $request;
    
    
      public function __construct(Request $request) {
        $this->request = $request;
      }
    }

    De context zorgt er vervolgens zelf voor dat de Dispatcher de Request binnen krijgt. Dit is denk ik iets de eenvoudig uitgelegd, maar ik zal wellicht volgende week wel eens een DI container in elkaar prutsen in PHP.

    In Java zijn verschillende (goede) voorbeelden te vinden zoals Spring Context, Google Guice en PicoContainer.

  • DirkZz
    Intermediate
    Ontvangen Reacties
    29
    Berichten
    213
    • 13 augustus 2013 om 20:22
    • #10

    Stefan.J :D Ik zit ook op de HAN, toevallig ook CRIA gedaan?

    M.Beers kijk eens naar het Laravel 4 framework, gewoon om te kijken hoe ze het daar hebben gedaan.

  • Stefan.J
    Master
    Ontvangen Reacties
    9
    Berichten
    2.358
    • 14 augustus 2013 om 13:51
    • #11

    DirkZz: Nee, ik heb DDOA, DIS en MPNA gedaan. Als minor heb ik Advanced Programming gedaan.

  • M.Beers
    Elite members
    Ontvangen Reacties
    31
    Berichten
    460
    • 14 augustus 2013 om 16:46
    • #12

    Stefan.J Ik heb inmiddels een PDF gelezen van Fabien Potencier (maken van Symfony) 104 pagina's, alleen ik snap het niet echt...
    Hoe zorg ik bijvoorbeeld dat ik die resources kan aanroepen zonder dat ik telkens een nieuwe container hoef te maken want dat is toch t voordeel om je overhead te beperken...

    Dit was mijn spreekbeurt, zijn er nog vragen?

  • Stefan.J
    Master
    Ontvangen Reacties
    9
    Berichten
    2.358
    • 14 augustus 2013 om 20:47
    • #13

    Ik heb onze Fabien even opgezocht, en ik vind wel dat hij een sterk artikel heeft gelezen over DI: http://fabien.potencier.org/article/11/wha…dency-injection

    Had je dat al gelezen? Want het legt het basisprincipe goed uit. Zo eenvoudig als mogelijk, zonder alle poespas, waar ik nu mee aankom. :)

    Stel je voor, je hebt de volgende classes:

    PHP
    class A {
    
    
    	private $b;
    
    
    	public function __construct(B $b, C $c) {
    		$this->b = $b;
    	}
    	
    	public function hello() {
    		$this->b->sayHello();
    	}
    }
    
    
    class B {
    
    
    	public function sayHello() {
    		echo "Hello world!";
    	}
    }
    
    
    class C {}
    Toon Meer

    Dan moet je nu voor het maken van A-object, ook een B- en C-object maken. Een van de voordelen van een DI container, is het volgende. Ik heb zojuist een context geschreven, en die kan al het volgende:

    PHP
    $context = new Context();
    $a = $context->load('A');
    $a->hello();

    Dat is hip hé? Ik vraag om een instantie van A, en vanzelf zoekt de context de juiste classes op die A nodig heeft, en maakt ze voor mij aan. De context, die nog veel te simplistisch is, ziet er nu als volgt uit:

    PHP
    class Context {
    	
    	public function load($className) {
    		return $this->loadClass(new ReflectionClass($className));
    	}
    	
    	private function loadClass(ReflectionClass $class) {
    		$constructor = $class->getConstructor();
    		
    		if($constructor == null) {
    			return $class->newInstanceWithoutConstructor();
    		}
    		
    		$parameters = array();
    		foreach($constructor->getParameters() as $parameter) {
    			$parameters[$parameter->getPosition()] = $this->loadClass($parameter->getClass());
    		}
    		
    		return $class->newInstanceArgs($parameters);
    	}
    }
    Toon Meer

    Het wekt nu allemaal nog veel te automagisch, en de performance is waarschijnlijk ook als een bad-eend, maar dat is wel op te lossen.

    Helpt dit een beetje?

  • M.Beers
    Elite members
    Ontvangen Reacties
    31
    Berichten
    460
    • 15 augustus 2013 om 02:35
    • #14

    Als het goed is moet de onderstaande classe een hoop doen... mits ik het goed begrepen heb ;) dit is voor setter/getter injections dan...

    PHP
    <?php
    
    
    namespace Delicious;
    
    
    class Object
    {
    
    
        /**
         * Return the full name of the class.
         *
         * @return string
         */
        public static function className()
        {
            return get_called_class();
        }
    
    
        /**
         * Class constructor.
         *
         * @return void
         */
        public function __construct()
        {
            // Do nothing for now...
    
    
            $this->init();
        }
    
    
        /**
         * Return the value of an object property.
         *
         * @param string $name Property name.
         * @return mixed
         * @throws \Exception Whether a object is not defined.
         */
        public function __get($name)
        {
            $getter = 'get' . ucfirst($name);
    
    
            if (method_exists($getter))
            {
                $this->{$getter}();
            } else
            {
                throw new \Exception("Getting unknown property: " . get_class($this) . "::" . $name);
            }
        }
    
    
        /**
         * Set value of an object property.
         *
         * @param string $name Property name.
         * @param mixed $value Property value.
         * @return void
         * @throws \Exception Whether an object is read-only or not defined.
         */
        public function __set($name, $value)
        {
            $setter = 'set' . ucfirst($name);
    
    
            if (method_exists($this, $setter))
            {
                $this->{$setter}($value);
            } elseif (method_exists($this, 'get' . ucfirst($name)))
            {
                throw new \Exception("Setting read-only property: " . get_class($this) . "::" .
                    $name);
            } else
            {
                throw new \Exception("Setting unknown property: " . get_class($this) . "::" . $name);
            }
        }
    
    
        /**
         * Check whether an property is set (not null).
         *
         * @param string $name Property name.
         * @return boolean
         */
        public function __isset($name)
        {
            $getter = 'get' . ucfirst($name);
    
    
            if (method_exists($this, $getter))
            {
                return ($this->{$getter}() !== null);
            } else
            {
                return false;
            }
        }
    
    
        /**
         * Set an object property to null.
         *
         * @param string $name Property name.
         * @return void
         */
        public function __unset($name)
        {
            $setter = 'set' . ucfirst($name);
    
    
            if (method_exists($this, $setter))
            {
                $this->{$setter}(null);
            } elseif (method_exists($this, 'get' . ucfirst($name)))
            {
                throw new \Exception("Unset read-only property: " . get_class($this) . "::" . $name);
            }
        }
    
    
        /**
         * Calls the named method, wich is not a class method.
         *
         * @param string $name Method name.
         * @param array $param Method parameters.
         * @return void
         * @throws \Exception Whether calling an unknown method
         */
        public function __call($name, array $params)
        {
            $getter = 'get' . ucfirst($name);
    
    
            if (method_exists($this, $getter))
            {
                $function = $this->{$getter}();
    
    
                if ($function instanceof \Closure)
                {
                    return call_user_func_array($function, $params);
                }
            }
    
    
            throw new \Exception("Unknown method: " . get_class($this) . "::" . $name . "()");
        }
    
    
        /**
         * Initialize the object.
         *
         * This function will be invoked after the constructor.
         */
        public function init()
        {
            // Do nothing...
        }
    
    
    }
    
    
    ?>
    Toon Meer

    Dit was mijn spreekbeurt, zijn er nog vragen?

    Bewerkt 2 keer, laatst door M.Beers (15 augustus 2013 om 03:14).

  • Stefan.J
    Master
    Ontvangen Reacties
    9
    Berichten
    2.358
    • 15 augustus 2013 om 13:46
    • #15

    Ik denk niet dat je hiermee bereikt wat de bedoeling is van DI. Hoe denk je de functionaliteit te gebruiken?

  • M.Beers
    Elite members
    Ontvangen Reacties
    31
    Berichten
    460
    • 15 augustus 2013 om 16:09
    • #16

    Extenden.. en vervolgens d.m.v. de magic __get methode de resources voor het object samenstellen, sorry ik snap er nou eenmaal niks van :S

    Dit was mijn spreekbeurt, zijn er nog vragen?

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!

Maak een account aan Login

ICT Nieuws

  • Fijne feestdagen

    tcbhome 28 december 2025 om 13:55
  • Kritieke update voor Really Simple Security-plug-in

    K.Rens 16 november 2024 om 16:12
  • ING Nederland streeft naar ondersteuning van Google Pay tegen eind februari

    K.Rens 2 november 2024 om 16:09

Blogs

  • Functioneel ontwerp

    Dees 28 december 2014 om 12:38
  • Access Control List implementatie in PHP/MySQL - deel 1/2

    FangorN 28 december 2018 om 12:35
  • Access Control List implementatie in PHP/MySQL - deel 2/2

    FangorN 29 december 2018 om 12:37

Gebruikers die dit topic bekijken

  • 5 Gasten
  1. Marktplaats
  2. Design
  3. Voorwaarden
  4. Ons team
  5. Leden
  6. Geschiedenis
  7. Regels
  8. Links
  9. Privacy Policy
ICTscripters ©2005 - 2026 , goedkope hosting door DiMoWeb.com, BE0558.915.582
Sponsors: Beste kattenhotel provincie Antwerpen | Beste Zetes eid kaartlezer webshop
Style: Nexus by cls-design
Stylename
Nexus
Manufacturer
cls-design
Licence
Commercial styles
Help
Supportforum
Visit cls-design