[oop] class instantiëren blokkeren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

3D BIM Add-on Developer

As a 3D BIM add- on developer at KUBUS, you will develop add-ons (called BCF- Managers) to the leading building information modeling (BIM) programs Revit, Navisworks, Archicad, AutoCAD and Tekla Structures. BCF Managers enable data transfer between BIM software and BIMcollab. You will work on both the front- and the back-end. As a software company, KUBUS is in a unique position. We build our own products that are used by tens of thousands of users worldwide. Our company is just the right size: big enough to make a real impact in the market, but small enough that as an individual

Bekijk vacature »

Senior Cobol Applicatieontwikkelaar

Bedrijfsomschrijving De IV- organisatie van de Belastingdienst is verantwoordelijk voor en verzorgt de ICT- voorzieningen. Het merendeel van de applicaties wordt op dit moment door de IV- organisatie zelf ontwikkeld, onderhouden en beheerd in het eigen data center. Naast de zorg voor continuïteit op de massale heffing- en inningsprocessen die plaatsvinden binnen een degelijke, stabiele omgeving, wordt er tevens volop gewerkt aan modernisering van het IV- landschap. Dit gebeurt deels intern door gebruik te maken van de expertise die intern aanwezig is, maar ook door het aantrekken van (kant-en-klaar) oplossingen en expertise uit de markt. Functieomschrijving In de applicatie ETM

Bekijk vacature »

.Net ontwikkelaar - Het schoolsysteem verbeteren!

Bedrijfsomschrijving Onze klant is een prettige en kleinschalige organisatie waar hard gewerkt wordt om het onderwijs te verbeteren. Daarom werken ze aan complexe om administratieve, financiële en facilitaire processen te versnellen en te verbeteren. Dit doen ze vanuit een platte organisatie voor klanten die door geheel Nederland verspreid zitten, hier horen vanzelfsprekend een aantal aansprekende HBO scholen en universiteiten toe. Functieomschrijving Je komt terecht in een organisatie waar op dit moment 2 scrumteams werken. Jij zal als .Net developer binnen 1 van deze scrumteams functioneren, iedereen binnen dit team heeft zijn/haar eigen expertise waardoor er met verschillende invalshoeken aan een

Bekijk vacature »

Front end developer

Functie Jij als ervaren Front end developer bent een expert het gebied van Javascript en React. Je wordt onderdeel van een multidisciplinair team bestaande uit een PO, twee Front end developers, een DevOps/Back end developer, een UX/UI designer en een projectmanager. Verder is er iemand verantwoordelijk voor de HR en is de algemeen directeur nauw betrokken bij alle projecten. Dagelijks hou jij je bezig met de verschillende projecten die zijn opgenomen in de sprint. Daarnaast denk je mee over mogelijke oplossingen om de behoefte van de klant op de beste manier in te vullen. Verder spar jij intern met collega’s

Bekijk vacature »

SQL Database developer

Functie omschrijving Wil jij meewerken aan het creëren van slimme software om magazijnen als een geoliede machine te laten lopen? Wij zoeken een zorgvuldig persoon, iemand die niet snel de hand omdraait voor complexe algoritmes. Denk jij dat jij de SQL ontwikkelaar bent die wij zoeken? Lees snel verder en wie weet zitten we binnenkort samen aan tafel! Jouw werkzaamheden zullen er als volgt uitzien: Je houdt je bezig met het ontwerpen en ontwikkelen van MS SQL server databases, dit doe je met T-SQL als programmeer laag. Je gaat aan high-end software oplossingen werken, dit doe je voor de optimalisatie

Bekijk vacature »

Android developer

De functie Schiphol is een plek om te reizen, te verblijven en te werken. Door middel van data en technologie richten we op al deze gebieden het leef- en werkklimaat optimaal in en zorgen we voor een slimmere en efficiëntere operatie. Wij ontwikkelen nieuwe producten en diensten vanuit de wensen en behoeften van onze klanten, voorspellen passagier flows en testen digitale oplossingen om rijen en andere pijnpunten in het proces te verminderen. Met slimme feedback van sensortechnologie maken we zelfs data van toiletten en stoelen inzichtelijk en bruikbaar. Het Commercial Platform bestaat uit multidisciplinaire teams met een end-2-end verantwoordelijkheid voor

Bekijk vacature »

Softwareontwikkelaar Cleopatra

Functieomschrijving: De directie Verkeer en Openbare ruimte van de gemeente Amsterdam beschikt over een softwareapplicatie, "Cleopatra", waarmee geautomatiseerde handhaving plaatsvindt (op basis van kentekenherkenning) van bepaalde gebieden waarin toegangseisen worden gesteld aan het verkeer. Voorbeelden ervan zijn de milieuzones, de zone zwaar verkeer, handhaving van bromen snorfietser op het fietspad en autoluwe gebieden. Voor de doorontwikkeling en uitbreiding ervan zijn gespecialiseerde softwareontwikkelaars nodig die helpen bij het programmeren van de handhavingsmodules voor nieuwe gebieden en het verbeteren en bijwerken van de bestaande onderdelen van de softwareapplicatie.De opdracht bestaat uit: het programmeren van de diverse modules;het tijdens demo's tonen van de

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Cloud Developer

Cloud Developers opgelet! Bij Luminis zijn ze opzoek naar jou. Lees de vacature en solliciteer direct. Luminis is een software- en technologiebedrijf met meerdere vestigingen. Vanuit deze vestigingen werken 200 professionals aan technisch hoogwaardige oplossingen voor klanten zoals KLM, Nike en Bol.com. Ook ontwikkelt Luminis eigen oplossingen op het gebied van cloud, Internet of Things, data intelligence, e-sports en e-learning. Luminis onderscheidt zich door aantoonbaar voorop te lopen in technologie en innovatie. Luminis heeft drie kernpunten die verankerd zitten in alles wat we doen: het omarmen van nieuwe technologie, meesterschap en kennis delen. Functiebeschrijving First things first! Het is belangrijk

Bekijk vacature »

C# ontwikkelaar

Functie omschrijving Werk jij graag met C# en het .NET framework in een leuk familiebedrijf? Lees dan snel verder! Jouw takenpakket hierbij is: Je gaat maatwerk software ontwikkelen en softwareoplossingen creëren. Je gaat werken in een Microsoft omgeving (ASP.NET) en gebruikt daarnaast C# en MVC. Samen met het huidige IT team binnen deze organisatie verwerk je de wensen van de klant tot een (eind)product. Daarnaast optimaliseer je de bestaande software. Bedrijfsprofiel Deze organisatie is gevestigd in de omgeving van Best en is een echt familiebedrijf. Je komt te werken in een klein team van developers, die zich voornamelijk bezighouden met

Bekijk vacature »

Senior Front-End Developer

As a Senior Front-end Developer you maintain the balance between creativity and functionality for our webshop, and you coach your fellow developers. How do I become a Senior Front-End Developer at Coolblue? As a Front-end Developer you work on the user-friendliness of our webshop for millions of customers. You enjoy working with the UX Designer to pick up stories. You get energy from coming up with creative solutions and are happy to present this within the team. You are also proud of your work and welcome all feedback. Would you also like to become a Senior Front-End Developer at Coolblue?

Bekijk vacature »

PHP Developer gezocht!

Functie omschrijving Wij zijn op zoek naar een PHP Developer! Ben jij op zoek naar een nieuwe uitdaging? Lees dan snel verder! Voor een organisatie in de regio Utrecht die zich bezighoud met het verbeteren van de medicatieveiligheid zoeken wij een Software Developer. In deze functie zijn wij op zoek naar een slimme en enthousiaste Developer die interesse heeft in farmacie, logistiek en ICT. Daarnaast beschik je over een goed analytisch vermogen en ben je van nature gestructureerd en resultaatgericht. Je moet in deze functie daadkrachtig, flexibel en communicatief goed zijn. Je verantwoordelijkheden bestaan uit: Object georiënteerd programmeren; Werken in

Bekijk vacature »

Senior Java Developer

Als Senior Java Developer bij Sogeti ben je onderdeel van onze toonaangevende community die bestaat uit ruim 100 gepassioneerde Java professionals. In teamverband lever je mooie prestaties. Daarmee draag je aan bij de meerwaarde die wij leveren aan onze top-opdrachtgevers. Geen werkdag is hetzelfde! Je bent voortdurend bezig met het oplossen van allerlei complexe vraagstukken binnen bedrijfs kritische systemen voor onze klanten in regio Noordoost zoals DUO, ING, CJIB en Tendernet. Natuurlijk krijg jij de mogelijkheid je verder te certificeren in dit vakgebied. We organiseren regelmatig technische Meetups en doen veel aan kennisdeling. Sogetisten hebben plezier in hun werk en

Bekijk vacature »

Java/Kotlin Developer

Java/Kotlin Developer Ben jij een ervaren Java/Kotlin developer met een passie voor het automatiseren van bedrijfsprocessen? Wil je graag deelnemen aan uitdagende projecten bij aansprekende klanten? En ben je op zoek naar een professioneel, ambitieus en dynamisch bedrijf om je carrière verder te ontwikkelen? Kom dan ons team bij Ritense in Amsterdam versterken! Zo ziet de functie eruit: Als Java/Kotlin developer bij Ritense ben je verantwoordelijk voor de ontwikkeling en implementatie van applicaties die bedrijfsprocessen automatiseren, zodat onze klanten slimmer, efficiënter en klantgerichter kunnen werken. Als developer ben je in de lead en zorg je voor de correcte oplevering van

Bekijk vacature »

.NET developer

Functie Als developer heb jij de keuze om aan te sluiten bij het team (13 developers) die op locatie projectmatig bij klanten werkt. Wanneer jij liever intern bij de werkgever werkt is er ook alle ruimte voor jou in het interne team (8 developers) van dit bedrijf. Je werkt samen aan verschillende projecten bij of voor de klant. Het project wordt aangeleverd door sales aan de project manager. Die maakt samen met de Resourcer een planning en op basis daarvan wordt uit het development team een “projectgroep” opgesteld. Hoeveel en welke projecten jij wilt oppakken gebeurt geheel in samenspraak met

Bekijk vacature »
Ozzie PHP

Ozzie PHP

22/04/2014 20:03:32
Quote Anchor link
Ola,

Ik heb een class met daarin een paar constant values. Verder doet die class niks, en daarom wil ik voorkomen dat de class geinstantieerd kan worden.

Volgens mij zijn daar 2 manieren voor:
- de class abstract maken, óf...
- een private constructor in de class zetten

Heeft een van deze methodes een voorkeur? Maakt het iets uit? Of is er nog een andere manier?
 
PHP hulp

PHP hulp

23/11/2024 18:52:38
 
Wouter J

Wouter J

22/04/2014 20:08:34
Quote Anchor link
Waarom zou je jezelf willen limiteren?

Voel je nu niet aangevallen, maar ik ontdek de laatste tijd erg in jouw vragen dat jij je applicatie heel erg wilt limiteren. Je wilt dat alles alleen uitgevoerd/gebruikt kan worden op de manier die je nu in je hoofd hebt. Uit ervaring, die jij waarschijnlijk wel kan delen, weet ik dat ik over hetzelfde problem over een paar maanden compleet anders denk. Ik zou dus iedereen altijd aanraden een applicatie zo open mogelijk te schrijven, "Open for extension, closed for modification" zoals het open/closed-principe zo mooi zegt.
 
Ozzie PHP

Ozzie PHP

22/04/2014 20:12:02
Quote Anchor link
Dankjewel voor het meedenken. Je hebt daar wel een punt. Echter, omdat ik er zeker van ben dat er verder met deze class niks gaat gebeuren en het zinloos is om 'm te instantiëren vind ik het netter om 'm dicht te gooien. En misschien heb je gelijk dat ik er over een paar maanden anders over denk, maar voor nu wil ik 'm dichtmaken :) Alleen de vraag is dus wat de beste manier daarvoor is. Abstract is van de ene kant netter omdat ik dan geen constructor in m'n class heb staan. Maar als ie abstract is kun je m wel weer extenden :-s
 
Wouter J

Wouter J

22/04/2014 20:18:06
Quote Anchor link
Goed, dan gaan we hem helemaal dichttimmeren:
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
<?php
final abstract class MijnMagJeNietGebruiken
{
    const MIJ_WEL = 'Ja, ikke wel!!!';

    final abstract private function __construct() {}
    final abstract private function __wakeUp() {}
    final abstract private function __sleep() {}
    final abstract private function __clone() {}
    final abstract private function __call() {}
    final abstract private function __callStatic() {}
    final abstract private function __get() {}
    final abstract private function __set() {}
    final abstract private function __destruct() {}
}

?>
Gewijzigd op 22/04/2014 20:19:31 door Wouter J
 
Ozzie PHP

Ozzie PHP

22/04/2014 20:24:40
Quote Anchor link
Mja, da's toch een beetje jammer Wouter. Een abstract class kan niet final zijn :-)

On-topic. Om instantiëren te voorkomen. Abstract of private constructor?
 
Dos Moonen

Dos Moonen

22/04/2014 20:41:07
Quote Anchor link
PHP laat het bovenstaande niet toe...

Zijn het echt alleen maar een paar constante die je in een class hebt staan? Geen static methods?
Want dan zou ik gewoon constante defineren in een namespace. Dat is wat je wilt berijken door een class te hacken: constanten in een namespace stoppen. Stop in dat geval de constante gewoon in een namespace!
Ozzie\WeekDays::MONDAY vs Ozzie\WeekDays\MONDAY

PHP 5.6 heeft wel een coole nieuwe feature: http://3v4l.org/4peGi
 
Ozzie PHP

Ozzie PHP

22/04/2014 20:49:31
Quote Anchor link
>> Zijn het echt alleen maar een paar constante die je in een class hebt staan?

Ja inderdaad!

>> Zijn het echt alleen maar een paar constante die je in een class hebt staan?

Ik snap ff niet hoe dat werkt eigenlijk... Ik kan toc niet automatisch een namespace laden?
 
Dos Moonen

Dos Moonen

22/04/2014 21:15:57
Quote Anchor link
Emhe... zou je de tweede quote kunnen vervangen door de correcte quote? Ik weet niet waar je het nu over hebt.
 
Ozzie PHP

Ozzie PHP

22/04/2014 21:21:29
Quote Anchor link
Oh, excuus :-s
Die zat nog onder de ctrl-v knop :)

Het ging hier om:

>> Stop in dat geval de constante gewoon in een namespace!

Ik kan toch niet automatisch een namespace laden?
 
Ward van der Put
Moderator

Ward van der Put

22/04/2014 21:27:15
Quote Anchor link
Je kunt dergelijke constanten in een interface zetten. Het overriden van interface-constanten is niet toegestaan, dus daarmee bereik je zoiets als een "final abstract" constante.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
interface a
{
    const b = 'Interface constant';
}

?>

[/ocde]
 
Ozzie PHP

Ozzie PHP

22/04/2014 21:39:45
Quote Anchor link
Ward, volgens mij werkt dat niet.

Ik wil bijv. dit kunnen doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

setLanguage(language::NL);

?>
 
Dos Moonen

Dos Moonen

22/04/2014 21:39:51
Quote Anchor link
"Ik kan toch niet automatisch een namespace laden?"
Tot PHP 5.6 kun je alleen classes/interfaces/traits importeren met het use keyword. https://wiki.php.net/rfc/use_function Heeft dat voor PHP 5.6 veranderd: je kunt functies en constanten ook importeren met het use keyword.

Is dat waar je het over had?
 
Ozzie PHP

Ozzie PHP

22/04/2014 21:54:35
Quote Anchor link
Dos, ik denk het niet.

Even een voorbeeldje om het idee duidelijk te krijgen. Ik wil ergens een language instellen aan de hand van constanten die in een language class staan. Dus zeg maar zoiets als dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php

namespace language;

class language {

  const NL = 0;
  const DE = 1;

}


?>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php

namespace user\preferences;

class preferences {

  public function setLanguage($language) {

  }

}


?>

En dan wil ik dit kunnen doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php

use user\preference\preferences;
use language\language;

$user_preferences = new preferences();
$user_preferences->setLanguage(language::NL);

?>

Die language class bevat alleen maar een aantal constanten, en daarom moet die class niet geinstantieerd kunnen worden.
Gewijzigd op 22/04/2014 21:55:49 door Ozzie PHP
 
Dos Moonen

Dos Moonen

22/04/2014 22:19:53
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

namespace language;

  const NL = 0;
  const DE = 1;

?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php

use user\preference\preferences;
use language;

$user_preferences = new preferences();
$user_preferences->setLanguage(language\NL);

?>


Tada!
 
Ozzie PHP

Ozzie PHP

22/04/2014 22:22:58
Quote Anchor link
Thanks Dos, tot zover volg ik je nog.. :)

Maar... ik ben ff kwijt hoe ik dit nu moet inladen :-s

Ik gebruik een autoloader om classes te loaden.

Hier wordt de language class dus automatisch geladen.

$user_preferences->setLanguage(language::NL);

Maar hoe doe ik dat dan in jouw situatie? Ik kan die namespace toch niet automatisch laden?
 
Wouter J

Wouter J

23/04/2014 08:03:53
Quote Anchor link
Constants in interfaces werken weldegelijk. Misschien eerst testen voordat je een perfect antwoord naar de prullenbak verwijst?
 
Ozzie PHP

Ozzie PHP

23/04/2014 12:19:21
Quote Anchor link
Wouter, ik wilde eigenlijk eerst aan je vragen waarom je zo raar reageert, omdat ik dacht dat je het over de oplossing van Dos had. Maar toen zag ik dat het over de oplossing van Ward ging.

Die heb ik gisteren getest en toen deed ie het niet. Net nog een keer getest en nu doet ie het wel. Ik vermoed dat ik dus gisteren ergens een echo ben vergeten.

Dus ondanks dat ik je opmerking in eerste instantie totaal niet begreep... toch bedankt :)
En Ward ook bedankt!
 
Ward van der Put
Moderator

Ward van der Put

23/04/2014 12:22:11
Quote Anchor link
Graag gedaan, ik wilde al vragen waarom je zo reageerde ;-)
 
Ozzie PHP

Ozzie PHP

23/04/2014 12:27:56
Quote Anchor link
Hehe, sorry Ward...

Ik had het getest, maar ik denk echt dat ik de echo ben vergeten. Anyhow... gelukkig was Wouter nog daar om me even wakker te schudden.

Al met al een mooie en prima oplossing! :)
 



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.