class zonder public method?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

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 »

Front-end Developer

Functie omschrijving Gezocht front-end developer! Voor een toffe organisatie in de regio Rhenen zij wij op zoek naar een front-end developer die de eindverantwoordelijkheid op zich neemt van alles wat met design te maken heeft. In deze functie heb je een adviserende rol en beschik je over een grote dosis vakinhoudelijke kennis. Samen met collega’s en klanten overleg je om aangeleverde designs om te zetten naar unieke concepten. Zo draag jij je steentje bij aan de groeiambities van de klant. Voor klanten wordt jij het vaste aanspreekpunt als het gaat over planningen hierin houdt je alle betrokkenen goed op de

Bekijk vacature »

Fullstack Software Developer

Bedrijfsomschrijving Functieomschrijving Java ontwerpen, bouwen en testen (T-shaped). Als senior ontwikkelaar ben je bekend in zowel de back-end als de frontend van een applicatie. Angular, Continious Delivery / Integration. Een ervaren iemand die de leiding kan nemen, een weg vindt in nieuwe situaties, en in oude applicaties. Initiatiefrijk, bekend met de (technische) omgevingen die we bij duo gebruiken, niet te beroerd om collega’s te helpen. Als senior programmeur in staat om op te treden als lead programmeur. Ondersteunt de testers bij de testautomatisering en minder ervaren programmeurs bij dagelijks werkzaamheden. Dit laatste met name op het gebied van Angular. Achtergrond

Bekijk vacature »

Junior .NET developer

Functie Wij hebben drie scrumteams. Het eerste team focust zich op het stukje hardware wat wij in huis doen. Zij maken als team o.a. gebruik van C++. De andere twee scrumteams zijn allebei bezig met data verwerking en maken hierbij in de backend gebruik van C# .NET / .NET Core. Het verschil tussen deze teams is dat één team de data verwerking doet voor de mobiele applicatie. Zij werken hierbij dus ook met Xamarin. Het andere team focust zich op de webapplicaties en maakt hierbij ook gebruik van ASP.NET MVC. Op basis van jouw ambities en kwaliteiten kijken wij samen

Bekijk vacature »

Frontend Developer

Dit ga je doen Door ontwikkelen van het online platform Deel uitmaken van verschillende ontwikkelteams Meedenken over UI/UX vraagstukken Uitdragen van Front-end binnen de organisatie Hier ga je werken Deze organisatie, gevestigd in de omgeving van Amsterdam, is een grote onderwijs instelling met meerdere vestigingen en een groot aantal studenten. Zo telt deze organisatie +/- 35.000 gebruikers. Bij deze organisatie staat jouw ontwikkeling centraal en is er veel ruimte voor eigen initiatieven. In samenwerking met jouw team ga jij de online omgeving verder ontwikkelen. In de rol van Front end Developer zal jij 50% van jouw tijd werken in het

Bekijk vacature »

C# .NET Software Ontwikkelaar

Functie omschrijving Gezocht: Software Developer C# .NET voor een dynamische organisatie! Ben je onlangs afgestudeerd of ben je toe aan de volgende stap in je professionele carrière? Lees dan verder! We zijn momenteel op zoek naar een Software Developer die klaar is voor een nieuwe uitdaging en die onze eindklant in de regio Arnhem kan versterken. In deze functie werk je aan verschillende projecten en bezoek je vaak klanten. Je kunt een rol verwachten met veel uitdaging, diversiteit en verantwoordelijkheid. Bedrijfsprofiel Binnen welke organisatie ga je aan de slag? Je gaat werken bij een organisatie die zich specialiseert in het

Bekijk vacature »

.NET Developer

Dit ga je doen Binnen het team bouw je aan een applicatie met andere .Net Developers, testers een Product Owner en een Business Analyst. Met het team wordt de backlog besproken. In overleg claim jij jouw deel en zorgt ervoor dat onderhoud en innovatie wordt gerealiseerd. Het project dat momenteel draait is het opgraden van de omgeving. Doorontwikkelen van de huidige applicatie; Overleggen met teamleden om de backlog te verdelen; Onderhouden van de huidige omgeving; Sparren met de business en het ophalen van nieuwe requirements. Hier ga je werken De organisatie is een van de grootste landelijke aanbieder van diverse

Bekijk vacature »

.NET developer

Functie Als ervaren .NET ontwikkelaar start jij in één van onze vier scrumteams. Met 30 ontwikkelaars werk jij aan de doorontwikkeling van ons core product. Ook werkt jouw team aan maatwerkoplossingen op aanvraag van de klant en op projectbasis. Wij vinden het erg belangrijk dat onze ontwikkelaars met plezier naar werk gaan. Een deel hiervan ligt uiteraard bij jezelf, als jij ontwikkelen niet leuk vindt, ben jij bij ons echt aan het verkeerde adres. Jouw team bestaat namelijk uit een groep gepassioneerde vakidioten die dit werk doen omdat dit eerst een hobby was! Daarnaast wordt er intern rekening gehouden 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 »

Software Developer C# .NET

Functie omschrijving Software Developer C# .NET gezocht voor een dynamische organisatie! Ben jij net afgestudeerd of toe aan een volgende stap in je maatschappelijke carrière? Lees dan snel verder! Wij zijn op zoek naar een Software Developer die klaar is voor een nieuwe uitdaging en die een organisatie in de regio Houten wil versterken. Je werkt in deze functie aan verschillende projecten en gaat vaak op bezoek bij klanten. In deze functie kun je een grote mate van uitdaging, diversiteit en verantwoordelijkheid verwachten. Bedrijfsprofiel Waar kom je te werken? Je komt te werken bij een organisatie dat gespecialiseerd is in

Bekijk vacature »

C# Ontwikkelaar

In het kort Als C# .NET Core ontwikkelaar ga je binnen onze business unit Transport en Logistiek aan de slag complexe maatwerk software voor bedrijf kritische systemen binnen de technische automatisering. Denk bijvoorbeeld een IoT-oplossing voor de logistieke sector waarbij we van ruim 200.000 machines de telemetrie en events verwerken. We zijn actief in de distributielogistiek, havenlogistiek en productielogistiek. Naast C# en .NET Core maken we ook gebruik van Azure technologie. En als trotse Microsoft Gold Partner leren we graag van en met jou. Wil jij jezelf blijven ontwikkelen binnen de technische automatisering met .NET, dan gaan we deze uitdaging

Bekijk vacature »

C#.NET/Unity Developer

Functieomschrijving Voor een gewaardeerde werkgever in de omgeving van Breda zijn wij op zoek naar een software ontwikkelaar. Dit bedrijf houdt zich bezig met de ontwikkeling van WMS Software (C#/Unity & SQL). Past dit bij jou? Lees snel verder! Jouw werkzaamheden zullen er als volgt uitzien: Je werkt aan innovatieve softwareoplossingen voor het verbeteren en/of vernieuwen van processen; Samen met 6 applicatieontwikkelaars hebben jullie de verantwoordelijkheid voor de uitbreiding en ontwikkeling van de webapplicaties; Het uitvoeren van updates/aanpassingen aan de huidig draaiende applicaties; Je bent een luisterend oor naar klanten en vertaalt hun wensen door naar bruikbare software. Bedrijfsprofiel Wie

Bekijk vacature »

Medior/senior Front-end developer

Functie Onder begeleiding van 3 accountmanagers waarvan er 1 binnen jouw expertise je aanspreekpunt zal zijn ga je aan de slag bij diverse opdrachtgevers. Hij of zij helpt je bij het vinden van een passende en uitdagende opdracht. Hierin houden ze uiteraard rekening met jouw situatie, ervaring en (technische) ambities. De opdrachten duren gemiddeld één tot 2 jaar. Hierdoor kun je je ook echt vastbijten in een project en als consultant impact maken. Naast de opdracht ben je regelmatig met je collega’s van de IT-afdeling om bijvoorbeeld onderlinge kennis te delen, of nieuwe trends te bespreken. Ook worden er regelmatig

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Back end developer PHP, Laravel

Functie Jij komt te werken in ons webdevelopment team, wat bestaat uit 8 ervaren collega’s. Hiernaast hebben wij nog een team van 2 ontwikkelaars die aan native applicaties werken. Bij ons zijn er korte lijntjes en er hangt een gezellige informele werksfeer. Maar het belangrijkste is natuurlijk dat je aan geweldige applicaties zult gaan werken! Wij willen als organisatie niet te groot worden, we willen gewoon toffe dingen maken. Onze techstack bestaat momenteel uit: PHP, Laravel, Javascript, Typescript, Git, MySQL, Java, Kotlin, Xamarin. Samen met ons ga jij zorgen dat we puik werk leveren! Waarbij je bij elke fase in

Bekijk vacature »

Pagina: « vorige 1 2 3 volgende »

Ward van der Put
Moderator

Ward van der Put

11/11/2013 15:37:43
Quote Anchor link
Ozzie PHP op 11/11/2013 14:48:45:
>> registreer rechtstreeks één autoload-functie (in plaats van een klasse);

Maar waar laat je die dan? Zet je die functie in je bootstrap?

Je moet ergens beginnen met een require die de pijlen richt op het Ozzie-framework. Of je dat nu de "configuratie", een "bootstrap", de "kernel" of een "environment-class" noemt, is eigenlijk lood om oud ijzer. En ja, die termen worden allemaal gebruikt, consistentie is wat dat betreft ver te zoeken.

Maar verder doet het er ook niet zoveel toe: nadat we het Ozzie-framework hebben opgestart, willen we dat het begrijpt hoe het Ozzie-dingen in de Ozzie-namespace geregeld zijn. Daar hoort een autoloader wat mij betreft bij.
Ozzie PHP op 11/11/2013 14:48:45:
>> prepend de autoload-functie (zodat deze als eerste aan de beurt is en niet — je zal ze ertussen hebben zitten — een autoloader die een directoryscan gebruikt).

Wat bedoel je precies met prepend? Ik heb maar 1 autoloader.

Dat hangt van de serverconfiguratie af, want autoloaders worden gestapeld. Daarnaast hangt het af van wat je aan software van derden gebruikt, want die registreren vaak hun eigen autoloader. Als de eerste autoloader een klasse niet kan vinden, wordt de volgende ingeschakeld. Daarom wil je met prepend de eerste zijn.
Ozzie PHP op 11/11/2013 14:48:45:
Maar waarom niet in een class? Dat zal qua performance toch niks uitmaken?

Waarom een object aanmaken dat verder niet wordt gebruikt? Je hebt dan in feite twee instanties van hetzelfde: de autoload-klasse plus de door die autoload-klasse geregistreerde autoload-functie. Als je die klasse enkel en alleen gebruikt om de autoload-functie te registreren, kun je beter de functie rechtstreeks registeren.

Wat hier niet helpt, is dat PHP geen elegante Singleton kent. Van de autoloader voor je complete framework heb je maar één instantie nodig. Meerdere keren dezelfde autoloader instantiëren heeft geen zin, maar een new Autoloader() kan te makkelijk worden herhaald. Je zult daarom, linksom of rechtsom, moeten regelen dat die autoloader maar één keer wordt geladen.
Gewijzigd op 11/11/2013 15:39:50 door Ward van der Put
 
PHP hulp

PHP hulp

06/01/2025 07:24:58
 
Ozzie PHP

Ozzie PHP

11/11/2013 15:50:08
Quote Anchor link
>> Als je die klasse enkel en alleen gebruikt om de autoload-functie te registreren, kun je beter de functie rechtstreeks registeren.

De class bevat dus ook de aut0load functie zelf voor het Ozzie framework.

>> Meerdere keren dezelfde autoloader instantiëren heeft geen zin, maar een new Autoloader() kan te makkelijk worden herhaald.

Ik snap je punt, maar dan moet ik de complete autoloader dus in m'n bootstrap gooien, en dan maakt ie geen onderdeel meer uit van de library. Dat vind ik eigenlijk wel jammer. Maar ik snap wel wat je bedoelt. Ik ga er nog ff over nadenken...
 
Ward van der Put
Moderator

Ward van der Put

11/11/2013 16:02:46
Quote Anchor link
Een simpele work-around is een globale constante definiëren:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
class Autoloader
{
    public function __construct()
    {

        if (!defined('OZZIE_AUTOLOADER_REGISTERED')) {
            $this->register();
            define('OZZIE_AUTOLOADER_REGISTERED', true);
        }
    }
}

?>

Dat heeft zowel voor- als nadelen. Zodra de constante !defined() is of ongelijk aan true is, weet je dat de autoloader niet geladen is. Maar-maar-maar: je roept daarmee buiten de klasse een globale constante in het leven. En die kan dus bijvoorbeeld buiten die klasse worden gezet. Of toevallig al bestaan, mocht iemand toevallig net dezelfde constantennaam gebruiken...
 
Ozzie PHP

Ozzie PHP

11/11/2013 16:12:33
Quote Anchor link
Hmmm, tja, lastig inderdaad... het alternatief is een singleton.

Overige opties... register functie toch public maken en handmatig aanroepen. Ik ga ervan uit dat niet zomaar iemand 'm dan aanroept.

Van de andere kant... het is de autoloader die bij het framework zelf hoort. Waarom zou iemand die zomaar aanroepen?

Wat vind jij nou overigens van de vraag of een class dan "zelfregulerend" mag zijn?

Ik verwijs weer even naar mijn eerdere voorbeeld: http://www.phphulp.nl/php/forum/topic/class-zonder-public-method/92895/1/#665442

Als een class iets configureert, moet je dan zelf de configure() method aanroepen, of dit door de constructor laten doen? Als je het de constructor laat doen, zie je niet direct dat er iets gebeurt. Van de andere kant, als je toch altijd die functie moet aanroepen, waarom zou je het dan handmatig doen? Je wil in feite alleen maar de geconfigureerde gegevens opvragen. Toch?
 
Dos Moonen

Dos Moonen

11/11/2013 16:39:44
Quote Anchor link
@Ward, je kunt constanten ook in namespaces zetten.

Even voor de duidelijkheid.
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
<?php
// code...

// Doe dit a.u.b. nooit

new Autoloader;

// dit is prima zolang je $autoloader nog ergens gebruikt
$autoloader = new Autoloader;

// ook prima zolang de functie/method er iets mee doet
Static::method(new Autoloader);
function(new
Autoloader);

// code
?>


Quote:
Ik snap je punt, maar dan moet ik de complete autoloader dus in m'n bootstrap gooien, en dan maakt ie geen onderdeel meer uit van de library.

Wat doe jij precies in je Autoload classe? Dit is nogal onduidelijk.
Is het iets zoals http://kohanaframework.org/3.3/guide-api/Kohana#init ?

Als je ALTIJD een method aan moet roepen voor het object bruikbaar is, refactor het dan zodat het deel is van de constructor.
Of de Autoloader::configure() method na het refactoren nog bestaat hangt er van af of Autoloader::configure() method later ook nog nuttig aangeroepen zou kunnen worden. Mogelijk knip en plak je dus alle code van Autoloader::configure() naar Autoloader::__construct() en verwijder je Autoloader::configure().
Gewijzigd op 11/11/2013 16:40:37 door Dos Moonen
 
Ward van der Put
Moderator

Ward van der Put

11/11/2013 16:51:22
Quote Anchor link
Dos Moonen op 11/11/2013 16:39:44:
@Ward, je kunt constanten ook in namespaces zetten.

Ja, dat weet ik, maar Ozzie wil geen namespaces gebruiken...
 
Ozzie PHP

Ozzie PHP

11/11/2013 17:00:28
Quote Anchor link
@Dos, thanks voor je uitgebreide reactie, alleen dat configure verhaal was even op zichzelf-staand, dus los van de autoloader class.

Over de autoloader class:
In die class set ik in de constructor 2 paden. Vervolgens heb ik een autoload-method die de class-files requiret (op basis van de class-naam) en vanuit de constructor roep ik een functie aan die die method registreert (kan ook rechtstreeks vanuit de constructor maar ik vind dit wat duidelijker). Heel schematisch:

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
<?php
class Autoloader {

  private $pad1;
  private $pad2;

  public function __construct() {
    // set $pad1;
    // set $pad2;

    $this->register();
  }


  private function autoload($class) {
    // laad een class file
    // afhankelijk van de "hoofd"-namespace gebruik je pad 1 of 2

  }

  private function register() {
    // register the autoload functie
  }
}

?>

Dit is wel ff heel kort door de bocht, maar dan heb je een idee.

Dan wat betreft die configurator vraag... heeft dus niks met de autoloader te maken... stel ergens in je applicatie heb je data, bijvoorbeeld een array $foo. En die array $foo moet op de een of andere manier geconfigureerd worden. Dit doe je met behulp van de (fictieve) class FooConfigurator. Deze class is dus bedoeld om $foo te configureren. Nu is mijn vraag, voordat je de geconfigureerde gegevens kunt opvragen aan deze class, moeten ze natuurlijk eerst geconfigureerd worden. Laat je dat door de constructor doen, of doe je dat zelf door handmatig de configure() method aan te roepen. Als je het handmatig aanroept, zie je in de code beter wat er gebeurt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$fc
= new FooConfigurator($foo);
$fc->configure(); // hé, er wordt geconfigureerd!
$foo_new = $fc->get();
?>

Als de constructor in de class zelf de configure method aanroept, dan zie je minder goed dat er wordt geconfigureerd:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$fc
= new FooConfigurator($foo);
// nu zie je niet zo goed dat er wordt geconfigureerd!
$foo_new = $fc->get();
?>

Toch lijkt me de laatste optie beter. Wat is jullie mening?

>> Ja, dat weet ik, maar Ozzie wil geen namespaces gebruiken...

Jawel! Tegenwoordig ben ik ook aan de namespaces :)

Maar het zou wel fijn zijn als jullie even uitleggen wat jullie met die opmerking over constanten en namespaces bedoelen... :-/
Gewijzigd op 11/11/2013 17:02:56 door Ozzie PHP
 
Ward van der Put
Moderator

Ward van der Put

11/11/2013 17:07:44
Quote Anchor link
Waarom moet het dan $pad1 of $pad2 zijn voor twee namespaces? Waarom twee namespaces? En waarom niet één namespace? Of meer dan twee namespaces?

Dat is precies wat Wouter bedoelde met een autoloader die namespaces ondersteunt.
 
Wouter J

Wouter J

11/11/2013 17:14:28
Quote Anchor link
Je gaat toch hopelijk niet de paden in de klasse instellen ozzie, maar erbuiten?
 
Ozzie PHP

Ozzie PHP

11/11/2013 17:17:07
Quote Anchor link
Ja, snap ik... maar in m'n eigen Ozzie framework heb ik die 2 nodig. Als ik een library van derden ga gebruiken, dan gebruik ik hun autoloader.

Toevoeging op 11/11/2013 17:19:21:

Misschien moet ik het nog duidelijker maken. Dit is een autoloader die alleen voor OzzieFramework werkt. Het is niet bedoeld voor libraries van derden.
 
Wouter J

Wouter J

11/11/2013 17:31:27
Quote Anchor link
En alsnog moet je die autoloader niet binnen de klasse gaan configureren. Je wilt die autoloader namelijk ook gebruiken voor andere projecten en ook als jij je directory structure gaat veranderen moet je niet de klasse hoeven veranderen, maar alleen hoe je de klasse aanroept.

Als je dit soort dingen gaat opslaan in een klasse heb je echt OO nog niet begrepen en moet je ophouden met deze OO vragen te stellen. Ga dan eerst een maandje OO leren, zonder aan code of aan je framework te denken. Anders wordt het echt niks.
Gewijzigd op 11/11/2013 17:31:38 door Wouter J
 
Ward van der Put
Moderator

Ward van der Put

11/11/2013 17:31:39
Quote Anchor link
Ozzie PHP op 11/11/2013 17:17:07:
Ja, snap ik... maar in m'n eigen Ozzie framework heb ik die 2 nodig. Als ik een library van derden ga gebruiken, dan gebruik ik hun autoloader.

Zo te zien heb je een soort master met meerdere slaves. Als dat inderdaad zo is, zou ik pad1 én pad2 doorgeven aan de autoloader, niet pad1 óf pad2.
 
Ozzie PHP

Ozzie PHP

11/11/2013 17:36:41
Quote Anchor link
>> Je wilt die autoloader namelijk ook gebruiken voor andere projecten en ook als jij je directory structure gaat veranderen moet je niet de klasse hoeven veranderen, maar alleen hoe je de klasse aanroept.

Dat was nu dus niet de insteek. Wat betreft doorgeven van paden heb je gelijk. Zal ik nog even aanpassen. Maar ik heb dus een specifieke autoloader die alleen voor het Ozzie framework is bedoeld. Eigenlijk hoort ie dus ook niet in de library thuis.

>> Zo te zien heb je een soort master met meerdere slaves. Als dat inderdaad zo is, zou ik pad1 én pad2 doorgeven aan de autoloader, niet pad1 óf pad2.

Hij heeft ook alle 2 de paden...

Kun je nog even reageren op de FooConfigurator vraag? Dan laten we de autoloader even rusten. Ik moet even kijken wat ik daarmee ga doen.
 
Ward van der Put
Moderator

Ward van der Put

11/11/2013 17:51:52
Quote Anchor link
Ozzie PHP op 11/11/2013 17:36:41:
Kun je nog even reageren op de FooConfigurator vraag? Dan laten we de autoloader even rusten. Ik moet even kijken wat ik daarmee ga doen.

Die "configurator" zal "iets" moeten "configureren", nietwaar? Naar alle waarschijnlijkheid is dat "iets" nog een "configuratie" ook. Lijkt me wel logisch.

Maar wees dan concreet. Is de configuratie één bestand? Is de configuratie één instelling? Of zijn het meerdere instellingen, bijvoorbeeld in een array? Of kan alles?

Wat Dos eigenlijk ook al zei: maak zulke keuzen expliciet in plaats van impliciet of "implied". Kies! En kies daarna door!
 
Ozzie PHP

Ozzie PHP

11/11/2013 18:03:09
Quote Anchor link
Ward, het maakt niet zozeer uit op welke manier er iets geconfigureerd moest worden. Dit is puur een voorbeeld. Ik snap het niet... eerst zeg je dat ik het via de constructor moet doen, en nu moet ik het weer expliciet doen?

Dit was gewoon een simpel voorbeeld. Je hebt een of andere data $foo. Daar moet iets mee gebeuren. Wat er mee moet gebeuren maakt niet uit, maar het is altijd hetzelfde. Weet je wat? Laten we zeggen dat $foo een taart is en dat de class die taart in stukken moet snijden. Dat is het enige wat die class doet. Nu is de vraag, geef jij zelf de opdracht om die taart in stukken te snijden:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$taart_snijder
= new TaartSnijder($taart);
$taart_snijder->snijTaart();
$gesneden_taart = $taart_snijder->get();
?>

... of laat je de constructor de opdracht tot snijden geven:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$taart_snijder
  = new TaartSnijder($taart);
$gesneden_taart = $taart_snijder->get();
?>

De taart moet altijd 1x gesneden worden. Wie geeft de opdracht. Jijzelf of de constructor?
Gewijzigd op 11/11/2013 18:05:10 door Ozzie PHP
 
Ward van der Put
Moderator

Ward van der Put

11/11/2013 18:12:12
Quote Anchor link
Ozzie, je vereenvoudigt vrijwel elke algemene vraag tot een specifiek voorbeeld.

Vervolgens verklaar je het specifieke antwoord op die specifieke vraag tot een algemeen geldend antwoord op de algemene vraag.

Zo werkt het niet, hè. Niet in wetenschapsfilosofie. En meer praktisch ook niet in PHP.
Gewijzigd op 11/11/2013 18:13:23 door Ward van der Put
 
Ozzie PHP

Ozzie PHP

11/11/2013 18:17:11
Quote Anchor link
Ik weet niet hoe ik de vraag anders moet stellen Ward.

Een class moet 1 sepcifieke handeling uitvoeren. Deze specifieke handeling, geef je daar zelf opdracht toe, of zorg je dat de constructor dat doet?

Zo, algemener kan ik mijn vraag niet stellen :)
 
Wouter J

Wouter J

11/11/2013 19:07:07
Quote Anchor link
> Dat was nu dus niet de insteek. Wat betreft doorgeven van paden heb je gelijk. Zal ik nog even aanpassen. Maar ik heb dus een specifieke autoloader die alleen voor het Ozzie framework is bedoeld. Eigenlijk hoort ie dus ook niet in de library thuis.

Waarom zou die klasse niet door andere projecten gebruikt mogen worden? OO draait om hergebruik, niks anders.
 
Dos Moonen

Dos Moonen

11/11/2013 20:44:18
Quote Anchor link
Het idee van een class zonder public methods zodat andere code het zogenaamd niet uit kan voeren is een beetje paranoïde.
1) Waarom zouden libraries die jij kiest ooit jouw Autoloader class gebruiken?
2) Met de reflection API is het alsnog mogelijk.

In het geval van de versimpelde Autoloader is de register() method overbodig en kan je spl_autoload_register() gewoon in de constructor gebruiken.
Zonder reflection kan je zo goed als niets met dat Autoloader object. Wat me terug brengt op de vraag die ik eerder stelde.

Wat is [dan] je reden om een object aan te maken? Maak er twee static methods van zodat Autoloader een static helper class wordt. Ik zie namelijk geen enkele reden waarom je een object zou willen.


Ik verwacht dat constructors een bruikbaar object kunnen afleveren. Als ik niet genoeg parameters mee geef aan de constructor om een bruikbaar object af te leveren dan wil ik blijkbaar geen bruikbaar object. Daar hoor ik dan mijn redenen voor te hebben. Ik kan het object bijvoorbeeld als parameter doorgeven aan iets dat het verder initialiseert via setters.
 
Ozzie PHP

Ozzie PHP

11/11/2013 20:52:33
Quote Anchor link
>> Maak er twee static methods van zodat Autoloader een static helper class wordt.

Ik snap niet helemaal wat je bedoelt. Om welke 2 methods gaat het dan, en waar laat je die? Kun je misschien een heel simpel (schematisch) voorbeeldje geven?

>> Ik verwacht dat constructors een bruikbaar object kunnen afleveren. Als ik niet genoeg parameters mee geef aan de constructor om een bruikbaar object af te leveren dan wil ik blijkbaar geen bruikbaar object.

Oké... maar iemand anders op het forum zegt dat wanneer je een object aanmaakt het altijd zo goed als gebruiksklaar moet zijn. Anders heb je alleen maar een soort "omhulsel". En dat is dus lastig. De een zegt dit, de ander dat.
 

Pagina: « vorige 1 2 3 volgende »



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.