• 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. Scripting & programmeren
  4. Advanced Programming

Forum

  • Ictscripters Chat

    Frenzo.Brouwer 9 maart 2026 om 21:31
  • Help testers nodig voor android app Urgent

    Servertjee 20 februari 2026 om 12:07
  • Partner Gezocht om meerdere NFT Collecties op Open Sea te Plaatsen

    Servertjee 20 februari 2026 om 12:06
  • Afspraken systeem met planbeperking

    Jeffrey.Hoekman 20 februari 2026 om 11:52
  • Developer Gezocht

    Servertjee 19 februari 2026 om 17:31
  • Na 15 jaar terug van weggeweest: iCriminals.nl is terug (BETA)!

    Servertjee 18 februari 2026 om 16: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

Marktplaats

  • Domeinportfolio uitkuis

    Syntax 19 maart 2026 om 10:18
  • Heel wat sterke domeinen > 2 letters, 3 letters, premiums

    Michael DW 11 maart 2026 om 12:12
  • 367 Nieuwe Domeinnamen Februari 2026

    shiga 1 maart 2026 om 14:50

interface OO

  • Patrick
  • 5 april 2012 om 12:16
  • Patrick
    Back in the game
    Ontvangen Reacties
    52
    Berichten
    1.417
    • 5 april 2012 om 12:16
    • #1

    Lange tijd eingelijk mezelf niet meer bezig gehouden met puur OO schrijven en ik dacht zelf ik mezelf is interfaces gaan aanleren is toch ook leuk :-).

    Kan iemand zeggen of ik op de goede weg zit en of er verbeteringen kunnen komen, opbouwend is goed afkrakend ook met onderbouwing.

    Mensen die er weinig of geen verstand van af hebben gerne ook niet te reageren :)..


    PHP
    interface Database {
        
        protected $connectionHolder = null;
        
        public function sqlConnect($hostname, $database, $username, $password = null);
        public function sqlQuery($line = null);
        
    }
    
    
    
    
    class Mysql implements Database {
        
        public function sqlConnect($hostname, $database, $username, $password = null) {
            parent::$connectionHolder = mysql_connect($hostname, $username, $password);
            
            if (!Database::$connectionHolder) {
                throw new Exception('failed_connection');
            }
           
            if (!mysql_select_db($database)) {
                throw new Exception('failed_databsae');
            }
            
            return true;
        }
        
        public function sqlQuery($line = null) {
           if (empty($line)) {
               throw new Exception('input_error');
           }
           
           if (empty($line)) {
                $sql = mysql_query($line);
                if (!$sql) {
                    return false;
                }
                else {
                    return true;
                }
           }
        }
    }
    
    
    class PostGreSql implements Database {
    
    
        public function sqlConnect($hostname, $database, $username, $password = null) {
            parent::$connectionHolder = pg_connect('host=' . $hostname . ' user=' . $username . ' dbname =' . $database . 'password=' . $password . '');
            if (!parent::$connectionHolder) {
                throw new Exception('failed_database');
            }
            
            return true;
        }
        
        public function sqlQuery($line = null) {
           if (empty($line)) {
               throw new Exception('input_error');
           }
           $sql = pg_query(parent::$connectionHolder, $line);
           if (!$sql) { 
               return false;
           }
           else {
               return true;
           }
        }
    }
    Toon Meer

    ps. exception class is nog niet geschreven en zal waarschijnlijk soort van system_exception worden :-).

    ps ps. Ik weet dat het very basic is geen holders and stuff maar ik wil erst mn basic goed hebben voor ik lekker ga prutsen met uitbreiden.

  • Guest, wil je besparen op je domeinnamen? (ad)
  • jopitan
    Professional
    Berichten
    684
    • 5 april 2012 om 12:22
    • #2

    Ik neem aan dat de sqlQuery method alleen is voor het uitvoeren van Update en Insert queries? If so, dan heb ik er tot nu toe nog niks op aan te merken.

    Daarnaast is er een php functie genaamd __autoload waarmee je verschillende classes in verschillende bestanden kunt plaatsen en dan alleen maar door middel van $obj = new CLASSNAME een bestand kunt includen en meteen kunt definen.

    Meerde bestanden met hun eigen class zorgt voor meer overzicht dan alles in één bestand te plempen naar mijn mening.

    Kast: HAF922 | CPU: I7-930 @ 4.0GHz | CPU Cooler: Noctua NH-D14 | HDD0: Crucial M4 128GB, HDD1: Kingston SSD 64GB, HDD2/3: WD Black & Green 1TB, HDD4: Seagate 1.5TB | Mem: Kingston HyperX 12GB @ 1600MHz | Graphics: Crossfire HD6970 | Res: 5760x1080

  • Darsstar
    Vreemd
    Berichten
    1.173
    • 5 april 2012 om 16:01
    • #3

    Een interface definieert methods die implementerende classes moeten hebben. Zo creëer je een soort contract wanneer je typehint.

    Tot je die classes ergens gaat gebruiken waar je typehint naar de interface heb je waarschijnlijk geen interface nodig.

    In dit geval kan het veel beter een abstracte class zijn, ook vooral omdat interfaces alleen methods en constante defineren, geen variabelen.

    Je zou een Transactionable interface kunnen maken die je dan laat implementeren door classes die een database vertegenwoordigen die transacties ondersteunen.

    Hier een klein simpel voorbeeldje van hoe classes, abstracte classes en interfaces samen kunnen werken wat hopelijk inspiratie of begrip geeft.

    PHP
    <?php
    
    
    interface Poisonous {
        public poison(Poisonable $poisonable);
    }
    
    
    interface Poisonable {
        public poison();
    }
    
    
    interface Hostile {}
    
    
    interface Neutral {}
    
    
    interface Passive {}
    
    
    abstract class Creature {
        public is_agressive() {
            return $this instanceof Agressive;
        }
        public is_neutral() {
            return $this->is_agressive() === false AND $this->is_passive() === false;
        }
        public is_passive() {
            return $this instanceof Passive;
        }
    }
    
    
    class Human extends Creature implements Poisonable, Neurtal {
        private $poisoned = false;
    
    
        public poison() {
            $this->poisoned = true;
        }
    }
    
    
    class Snake extends Creature implements Poisonous, Hostile {
        public poison(Poisonable $poisonable) {
            if (mt_rand(0,2)) {
                $poisonable->poison();
            }
        }
    Toon Meer

    miauw!

Participate now!

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

Maak een account aan Login

ICT Nieuws

  • Samsung zal miljoenen verdienen aan Apple iPhone Fold dankzij zijn 12GB RAM

    ICTscripters 11 maart 2026 om 22:42
  • Apple heeft zojuist iOS 26.4 Beta 4 vrijgegeven: hier is de verwachte lanceerdatum.

    ICTscripters 11 maart 2026 om 12:01
  • Kritieke kwetsbaarheid in Nginx UI bedreigt gevoelige data

    ICTscripters 10 maart 2026 om 18:29

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

  • 2 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