Method overloading and class inheritance

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior, Medior and Junior SAP HANA Developer

Vacature details Vakgebied: Software/IT Opleiding: Medior Werklocatie: Veldhoven Vacature ID: 12696 Introductie Our client is the world's leading provider of lithography systems for the semiconductor industry, manufacturing complex machines that are critical to the production of integrated circuits or chips. Our purpose is “unlocking the potential of people and society by pushing technology to new limits”. We do this guided by the principles “Challenge”, “Collaborate” and “Care”. Wat verwachten we van jou? SAP Certified Application Associate - SAP HANA Cloud Modeling (training and/or certification) Bachelor degree or higher Excellent understanding of SAP HANA (2.0 / Cloud), Data Modelling and writing

Bekijk vacature »

Jan Van Looveren

Jan Van Looveren

16/08/2011 09:54:07
Quote Anchor link
Hoi,

Ik heb onderstaand probleem. Ik zou telkens eenzelfde object willen maken. Dit bevat alle methods die beschikbaar zijn. Probleem is nu als ik de parameter verander en tussen verschillende klanten wil wisselen, ik steeds het default print out krijg ipv de print afhankelijk van de parameter

Ik weet niet of dit zelfs kan ma ik denk toch dat het mogelijk moet zijn.

Alvast bedankt

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php
#System Defaults
namespace DefaultNameSpace;

class defaultClass{

    private $property;

    public function __construct($cusotmer)
    {

        if (isset($cusotmer)){
            $namespace = '\Customer' . $cusotmer .'Namespace\defaultClass';
            # create new dynamic object
            return new $namespace();
        }
else {
            return $this;
        }

    }

    public function printInvoice(){
        echo 'Default Print';
    }

    public function createInvoice($invoice){}
}


#Customer One defaults
namespace CustomerOneNamespace;

class defaultClass extends \DefaultNameSpace\defaultClass {

    private $property;

    public function __construct()
    {

        return $this;
    }

    public function printInvoice(){
        echo 'Customer One';
    }

    public function createInvoice ($invoice){
        echo 'Create invoice Customer One '.$invoice;
    }
}

# Customer Two Defaults
namespace CustomerTwoNamespace;

class defaultClass extends \DefaultNameSpace\defaultClass {

    private $property;

    public function __construct()
    {

        return $this;
    }

    public function printInvoice(){
        echo 'Customer Two';
    }
}

# Call alsways default Class
$test = new \DefaultNameSpace\defaultClass('Two');
$test->printInvoice();
$test->createInvoice('123456');

?>
 
PHP hulp

PHP hulp

29/12/2024 04:51:10
 
Fabian M

Fabian M

16/08/2011 10:01:08
Quote Anchor link
Klopt het dat je je defaultClass in je defaultNamespace construeert?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
# Call alsways default Class
$test = new \DefaultNameSpace\defaultClass('Two');
$test->printInvoice();
$test->createInvoice('123456');


Dit print inderdaad "Default Print".
Gewijzigd op 16/08/2011 10:05:59 door Fabian M
 
Jan Van Looveren

Jan Van Looveren

16/08/2011 10:15:46
Quote Anchor link
Idee was dat ik in de constructor van mijn default class ga kijken of er een classe voor een bepaalde klant is. Het kan bv zijn dat klant drie de default instelling goed vind en dus geen extra development nodig heeft.

Op dat moment blijft hij dus binnen de defaultnamespace en default class.
Heeft de klant toch specifieke aanpassingen dan kunnen we door het wijzigen van de namespace een call doen naar zijn methods en deze overloaden.

Het voorbeeld zou eigenlijk naar mijn idee Customer Two op het scherm zetten.
Gewijzigd op 16/08/2011 10:16:33 door Jan Van Looveren
 
Pim -

Pim -

16/08/2011 12:40:44
Quote Anchor link
Dan moet je niet de constructor gebruiken, die kan namelijk geen waarden terug geven (logisch, wat het geeft altijd zichzelf terug), maar een Factory die de juiste klasse teruggeeft:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$object
= Factory::load('default', 'two');
?>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.