Kan een object zichzelf vernietigen?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Full stack developer

Bedrijfsomschrijving De organisatie waarbinnen je aan de slag zal gaan levert diensten aan een groot aantal organisaties binnen Nederland. De software die zij maken en inzetten voor hun klanten wordt dagelijks door honderden klanten gebruikt. Onze opdrachtgever is marktleider in Nederland als het gaat om full-service HR-dienstverlening. De afgelopen periode is onze klant hard gegroeid en daar zijn de nodige uitdagingen bij komen kijken. Om deze groei voort te kunnen zetten zijn ze op zoek naar nieuwe vaste medewerkers, dit om ervoor te zorgen dat ze marktleider blijven. Zij zijn op zoek naar professionals die samen met hen aan innovatieve

Bekijk vacature »

Azure Engineer

Senior Azure Engineer Welkomstbonus van € 5.000,- Bij T2 zorgen we goed voor elkaar en doen wij leuke dingen met leuke mensen. We zorgen voor uitdagende opdrachten zodat jij jezelf onbeperkt kan blijven ontwikkelen. Ben jij een ervaren Azure Engineer en wil je het beste uit jezelf halen? Dan ben je van harte welkom bij T2 en ontvang je onze welkomstbonus ter waarde van € 5.000,-. Wat mag je nog meer verwachten? Als je met ons de uitdaging aangaat dan bieden we je het volgende: • Dienstverband voor onbepaalde tijd • Salaris tussen de € 4.000,- en € 4.500,- bruto

Bekijk vacature »

BI/SQL developer met uitstekende voorwaarden!

Bedrijfsomschrijving Mijn klant is een financiële dienstverlener gevestigd in Amersfoort. Ze hebben vestigingen in diverse landen en er werken momenteel ruim 500 mensen wereldwijd. Ze bieden een breed divers dienstenpakket aan. De afdeling waarin jij komt te werken bestaat uit 5 SQL-server/Business Intelligence specialisten. Het betreft een interne functie op een vaste werklocatie in een fijne omgeving. Tevens zijn de arbeidsvoorwaarden binnen deze organisatie uitstekend te noemen. Waaronder een vaste 13e maand. Functieomschrijving Mijn klant is op zoek naar een ervaren SQL-server database ontwikkelaar, met bij voorkeur kennis van Microsoft Business Intelligence tooling. Het team waarin je werkzaam wordt bestaat

Bekijk vacature »

.NET developer

Bedrijfsomschrijving Als Senior .NET developer ga je werken in een DevOps team aan state-of-the-art oplossingen voor diverse opdrachtgevers. Denk hierbij aan het van scratch af aan bouwen van oplossingen, platformen, apps en andere portalen waar grote hoeveelheden data, AI en loT centraal staan. Zo is de organisatie onder andere bezig met het bouwen van een platform wat gebouwen middels tal van sensoren in kaart brengt en alles wat daarbij komt kijken. Zo kan iedereen in een opslag op een plattegrond zien welke ruimte bezet, gereserveerd of vrij is en wordt dit gekoppeld met andere diensten, bijvoorbeeld richting schoonmakers die weten

Bekijk vacature »

Senior/Lead .NET Developer/Architect - interne fun

Bedrijfsomschrijving Voor een informele organisatie, gevestigd in Den Haag, ben ik op zoek naar een Senior .NET Developer/Architect die het leuk vindt om regelmatig de leiding in een team te nemen. Het gaat hier om een interne functie waarbij je komt te werken aan een in-house ontwikkeld product. Je komt terecht in een klein en informeel ontwikkelteam, bestaande uit een handvol ontwikkelaars, het hele team bestaat uit ongeveer 30 personen. Het hoofdproduct waaraan jullie werken is het beste te bestempelen als een HR systeem voor grote bedrijven. Met het product van jouw nieuwe werkgever worden alle HR gerelateerde zaken, bijvoorbeeld

Bekijk vacature »

Advanced Mendix Developer Logistic Solutions (NL)

Advanced Mendix Developer Logistic Solutions (NL) Den Haag HBO/WO IT Professional "Als Advanced Mendix Developer impact maken op de groeiende E-commerce markt met onze logistieke software en onze kritieke logistieke keten. Je doet dit door ontwikkeling en uitbreiding van onze Mendix Cloud omgeving, waarbij je complexe business processen vertaalt naar kritieke Mendix applicaties." Wat ga je doen? PostNL is becoming a postal tech company. Je komt te werken binnen PostNL Logistic Solutions. Daar gaan we net wat verder dan een standaardpakket of brief. Het gaat bijvoorbeeld om gekoeld vervoer van medicijnen (Health), Warehousing (Fulfilment), het leveren binnen hele strakke tijdvakken

Bekijk vacature »

C# backend developer, Rotterdam

Voor een grote organisatie in Rotterdam zijn we op zoek naar iemand met ruime ervaring in het ontwikkelen van applicaties in .NET C#. Het gaat hier om een organisatie met een maatschappelijke impact. Hun systemen zijn gericht op een groot aantal klanten waarbij het belangrijk is dat de applicaties helder, toegankelijk en up-to-date zijn. Als .NET C# developer werk je aan uiteenlopende applicaties, APIs en het interne framework. Dit doe je binnen een SCRUM team en meedenkt binnen het hele proces. Het team bestaat uit meerdere C# developers variërend van medior tot senior. Er is dus veel kennis en ervaring

Bekijk vacature »

CPQ Implementatie Consultant (Netherlands)

Experlogix is een snelgroeiend en succesvol softwarebedrijf op zoek naar talent. Wij ontwikkelen en implementeren configuratortechnologie (CPQ) voor Microsoft Dynamics. Onze klanten gebruiken onze configurator om snel en foutloos complexe calculaties uit te voeren en/of ingewikkelde offertes te maken. Dit alles in een internationale omgeving bij grote en middelgrote bedrijven waaronder bierbrouwers, windmolenfabrikanten en leveranciers van raambekleding. Als CPQ consultant ben jij de brug tussen onze CPQ Software en de processen en bedrijfsplannen van de klant. Zo help jij onze internationale klanten bij het stroomlijnen van bijvoorbeeld complexe offertetrajecten door het implementeren en inrichten van configuratiemodellen in de Design Studio.

Bekijk vacature »

.NET Developer / nieuwe technieken / Nijmegen / &e

Bedrijfsomschrijving Deze ambitieuze en informele organisatie groeit ontzettend hard en daarom zoeken zij uitbreiding voor het development team. Dit zorgt ervoor dat jij als .NET ontwikkelaar op leuke en uitdagende maatwerk projecten komt te werken voor gave klanten in diverse branches. Allemaal om de user experience te overtreffen! Bij deze organisatie ligt er veel focus op de persoonlijke ontwikkeling en groei van hun medewerkers. Ze hebben ambities en daarom zoeken zij mensen die uit hetzelfde hout gesneden zijn. Mensen die graag in een informele setting werken waarbij aan alle randvoorwaarden wordt gedacht om optimaal te kunnen presteren. Je komt in

Bekijk vacature »

IT Systems Support Specialist

IT Systems Support Specialist Optelec Nederland B.V. located in Barendrecht OPTELEC NEDERLAND B.V. is part of the Vispero™, the world's leading developer and manufacturer of software, optical and electronic devices. Vispero™ improves the quality of life of people with visual impairments by providing simple and effective solutions. For our office in Barendrecht we are immediately looking for the following colleague: About You… Experienced with Windows Desktop & Server OS and VMware environment. Strong analytical, troubleshooting, and problem-solving skills Ability to communicate effectively across organizational boundaries Ability to research and understand technical documentation Experience with Microsoft Office applications Good organizational and

Bekijk vacature »

Developer - 12build

Wil jij jouw vindingrijke expertise inzetten voor revolutionaire innovaties in de cloud? Vind je de (internationale) bouwsector interessant en tenminste 5 jaar werkervaring? Ben je ambitieus en wil je je analyserende skills laten gelden in een professionele development-team? Dan is 12Build op zoek naar jou! Functie omschrijving In ons development team zijn we steeds bezig om ons eigen Saas platform uit te breiden en te verbeteren. Wij werken onder andere met: PHP Laravel Microservices TypeScript, JavaScript Vue.js (Nuxt.js) Docker API Gateway, OpenApi AWS Services (Fargate, SNS, SQS, S3) MySQL, ElasticSearch Bitbucket Pipelines Terrafrom Jira, Confluence, Slack Functievereisten In het kort

Bekijk vacature »

IAM developer

Functieomschrijving IAM, voor jou hoeven we dat niet te vertalen toch? Want jij weet exact waar wij het over hebben bij het benoemen van Identity Access Management. Ben je toe aan een informele, mensgerichte omgeving met vrijheid, ondernemerschap, creativiteit en focus op innovatie? Dat zijn wij! En laten wij nou op zoek zijn naar jou, een IAM developer die ons team helpt Randstad naar een veilige toekomst te helpen. Als IAM developer bij ons ben jij samen met de overige teamleden aanspreekpunt binnen de organisatie ten behoeve van functionele en technische vragen omtrent Identity & Access Management. Samen met andere

Bekijk vacature »

Datawarehouse ontwikkelaar / ETL ontwikkelaar

Bedrijfsomschrijving Onze klant is een semi overheidsinstelling. Ze zijn bezig met het bouwen van een nieuwe BI omgeving. Ze hebben onderzocht hoe het datalandschap en de informatievoorziening geprofessionaliseerd kan worden. Als DWH Ontwikkelaar kun jij hier een belangrijk rol in gaan spelen over hoe je het verder gaat uitvoeren. Het is een informele organisatie met een goede werksfeer. De mensen die er werken zijn ambitieus en werken met de nieuwste technieken. Ben jij toe aan een nieuwe uitdaging als datawarehouse ontwikkelaar waar jij kunt meebouwen aan een nieuwe omgeving? Dan is deze functie je op het lijf geschreven. Functieomschrijving Datawarehouse

Bekijk vacature »

Full stack C# .NET web developer, inhouse project

Ben je een C# .NET developer met circa 0 tot 2 jaar ervaring en op zoek naar een nieuwe baan als web developer in Rotterdam? Bij een organisatie waarbij je inhouse kan werken maar wel de afwisseling hebt van telkens nieuwe projecten voor externe klanten? En het liefste een organisatie waar je de zekerheid en mogelijkheden hebt die horen bij een groot bedrijf maar waarbij je tevens de informaliteit en vrijheid hebt van een kleine club? Daarbij natuurlijk een goed salaris, uitstekende pensioenregeling, onkostenvergoeding, de nieuwste versie van de Iphone of Samsung, plus laptop. En de mogelijkheid voor een leaseauto

Bekijk vacature »

Senior Applicatie developer

Wil jij werken aan complexe IT-systemen bij een van de grootste logistieke werkgevers ter wereld? Als ontwikkelaar bij UPS werk je aan opkomende technologieën en DevOps processen om ervoor te zorgen dat onze logistieke processen zo soepel en efficiënt mogelijk verlopen. Dit ga je doen Je bent betrokken bij alle facetten van applicatieontwikkeling. Je bent betrokken bij alle facetten van applicatieontwikkeling: van ontwerpen en bouwen tot testen en implementeren. Je levert ontwerpen die passen bij de onderliggende frameworks en concepten, bouwt efficiënte en testbare code, identificeert en integreert modulaire software en levert geïntegreerde unit tests. Dit doe je samen met

Bekijk vacature »

Pagina: 1 2 volgende »

Ozzie PHP

Ozzie PHP

19/11/2010 14:44:22
Quote Anchor link
Kan een object zichzelf vernietigen? Klinkt onduidelijk maar dit is wat ik bedoel:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$class = new TestClass();
$class->doe_iets();
$class->vernietig_jezelf();


Als je nu vervolgens weer $class->doe_iets() zou aanroepen zou je een error moeten krijgen omdat het object niet meer bestaat.

Is dat mogelijk?
 
PHP hulp

PHP hulp

06/03/2021 03:24:04
 
Yea Rupie

Yea Rupie

19/11/2010 15:12:56
Quote Anchor link
ik denk zoiets:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
unset($class);
?>
 
Nicoow Unknown

Nicoow Unknown

19/11/2010 15:50:30
Quote Anchor link
Google al geprobeerd?
http://ca.php.net/manual/en/language.oop5.decon.php

Je moet kijken naar class destroy of destructors.
Gewijzigd op 19/11/2010 15:50:50 door Nicoow Unknown
 

19/11/2010 16:58:56
Quote Anchor link
op stackoverflow staat hierover ook een topic. Zoek op kamikase (geen idee hoe je het schrijft).
 
Ozzie PHP

Ozzie PHP

19/11/2010 18:22:52
Quote Anchor link
Nico Kaag op 19/11/2010 15:50:30:
Google al geprobeerd?

Pfff... ja natuurlijk. Wat dacht je zelf?

Het is me alleen tot op heden nog niet gelukt.
Het lastige is dat het om een functie gaat die zijn eigen class kapot moet maken. __destruct lijkt niks te doen. Iemand een goede suggestie?
 
Mark L

Mark L

19/11/2010 19:03:37
Quote Anchor link
Volgens mij wordt een class pas 'vernietigd' als ALLE verwijzingen naar deze class weg zijn.
Voor zover ik weet, is het niet mogelijk om deze verwijzingen te verwijderen.

Ik hoop dat ik het mis heb. Dat zou voor mij ook heel wat extra functionaliteit teweeg brengen.
 
Ozzie PHP

Ozzie PHP

19/11/2010 20:32:12
Quote Anchor link
Om mijn vraag misschien nog wat duidelijker te stellen...

Kun je een object aanmaken en toekennen aan een variabele en vervolgens het object zichzelf laten vernietigen zodat je met de variabele het object niet meer kan aanspreken.
 

19/11/2010 20:35:52
Quote Anchor link
En al op stackoverflow gekeken?
 
Niels K

Niels K

19/11/2010 20:36:40
Quote Anchor link
Waarom volstaat unset niet gewoon? zoals yearupie aangeeft? Wat moet de class doen? Een nieuwe instantie krijgen zodat alle gedefinieerd waarden opnieuw worden gezet?

Kortom nog meer uitleg graag ;-)
 
Ozzie PHP

Ozzie PHP

19/11/2010 20:51:00
Quote Anchor link
@KarlKarl: Ja, maar kan op stackoverflow niks vinden over kamikase.

@Niels:
Ik heb een database class. Uhmmm... hoe leg ik dit nu weer uit :-s

Door de get functie van de database aan te spreken kan ik een instantie van de database class ophalen die een eigen PDO verbinding bevat. Ik wil zo'n database kunnen afsluiten door de functie close te gebruiken. Deze functie killt de PDO verbinding. Dat gaat allemaal prima.

Maar stel je nu dit voor:

$database = Database::get{'test'};
$database->voerietsuit();
$database->close();

De database verbinding is nu gesloten, echter ik kan nog steeds de database instantie aanspreken en de functie voerietsuit() gebruiken. Dit gaat tot fouten leiden omdat de verbinding is afgesloten. Natuurlijk kan ik de variabele $database unsetten, maar dan moet ik telkens na het aanroepen van een close functie ook nog de variabele unsetten. Ik hoopte dat ik de betreffende instantie kapot kan maken in de close() functie, zodat $database->voerietsuit() totaal niet meer werkt.

Ik hoop dat je begrijpt wat ik bedoel :-/
 
Niels K

Niels K

19/11/2010 21:23:30
Quote Anchor link
Ik snap wat je bedoeld ja. Wat je kan doen is kijken van, joh is er uberhaupt een verbinding met de database? Zoja, dan pas de query uitvoeren. of andere shit die je wilt.

Maar waarom zou je de verbinding willen sluiten? Als je hem niet meer nodig hebt, gebruik je het object toch niet meer? Misschien dat reflection iets voor je kan doen? Volgens mij kan je daarmee je object 'vernietigen'

Even een edit. Als je unset($object) doet, roept hij eerst de __destructor aan voordat het object wordt weggegooid. Dat is volgens mij dus een vervanger van $database->close() ?
Gewijzigd op 19/11/2010 21:26:13 door Niels K
 
Ozzie PHP

Ozzie PHP

19/11/2010 21:32:34
Quote Anchor link
Oooh... zover reikt mijn kennis niet :-(

Maar als ik het goed begrijp kan wat ik wil dus eigenlijk niet... hmmm, jammer...

In het verlengde hiervan.. ik heb in de database class een statische private array waarin ik de instanties van de database class opsla. Klinkt ingewikkeld maar valt nogal mee. Nu wordt er in mn framework altijd een default database verbinding gemaakt. Echter, ik wil niet dat je deze verbinding kan closen. Is het dan ook mogelijk om een functie in de class te unsetten? Lekker duidelijk dit, hahaha...

Voorbeeldje:

Database::set('default'); // doe iets waardoor de functie close() uit de class wordt gehaald
$database_default = Database::get('default');
$database_default->close(); // he, deze functie kun je nu niet aanroepen!

Database::set('zomaareendatabase);
$database_zomaar = Database::get('zomaareendatabase);
$database_zomaar->close(); // de database verbinding wordt gesloten



Even een edit. Als je unset($object) doet, roept hij eerst de __destructor aan voordat het object wordt weggegooid. Dat is volgens mij dus een vervanger van $database->close() ?

Moet ik dan in die __destruct wel eerst de PDO verbinding sluiten? Op zich zou dit kunnen, maar ik vind het aanroepen van een close functie wel veel mooier en gebruiksvriendelijker.
Gewijzigd op 19/11/2010 21:34:23 door Ozzie PHP
 
Niels K

Niels K

19/11/2010 21:51:58
Quote Anchor link
Wat dacht je van dit?

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

public function __destruct( )
{

    $this->close();
    // of
    Framework_Registry::getInstance()->get('db')->close( );
}

?>


Genoeg keuze dus:) Een destructor kan gewoon bijna alles wat een andere methode kan.
 
Ozzie PHP

Ozzie PHP

19/11/2010 22:01:14
Quote Anchor link
Ah zo ja, oke... maar om die __destruct te "triggeren" zou ik dan dus moeten zeggen unset($database). Correct?

Zelf vind ik $database->close() eigenlijk wel veel mooier.. maar tja, als het niet anders gaat dan dat.... dan heb ik denk ik weinig keus.
 
Niels K

Niels K

19/11/2010 22:03:49
Quote Anchor link
Precies. En misschien zoals ik al zei kan je doormiddel van reflection in de klasse zelf unsetten?

Moet je even mee spelen.
 
Ozzie PHP

Ozzie PHP

19/11/2010 22:10:54
Quote Anchor link
Kun je misschien een heel simpel voorbeeldje geven van wat je bedoelt want ik heb werkelijk waar geen idee....

(had je mijn vraag over het unsetten van een specifieke functie nog gelezen? zie hierboven...)
 
Niels K

Niels K

19/11/2010 22:18:12
Quote Anchor link
ReflectionClass afhandeling zou ik even niet weten. Maar waarom zet je standaard default database verbinding op? Waarvoor is dit nodig?

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
<?php

class Database
{
    private $connection;
    
    public function __construct( ) {}
    
    public function close( )
    {

        // Of what ever
        return mysql_close( $database );
    }

    
    public function __destruct( )
    {

        // Methode aanroepe die closes
        $this->close( );
        
        // Of hierin
        mysql_close( $database );
        
    }
}


// Via registry
$registry = Registry::getInstance( );
$db = $registry->get( 'db' );
unset( $db ); // Nu wordt zover ik weet dus de destructor aangeroepen

?>
Gewijzigd op 19/11/2010 22:18:34 door Niels K
 
Ozzie PHP

Ozzie PHP

19/11/2010 22:24:01
Quote Anchor link
Ja, oke... dit snap ik, alleen doe ik het niet via de registry maar gewoon via een statische get functie in de databse class. In de database class hou ik dan een statische array bij met instances en via de statische get functie haal ik dan een database op.

Ik zet een standaard verbinding op, nou ja.. eigenlijk een standaard database class want de verbinding wordt pas gemaakt op het moment dat ik de database voor de 1e keer get. Pas dan maakt ie daadwerkelijk verbinding. Oke, waar was ik.. oh ja... een standaard database die heb ik nodig voor mn framework, bijvoorbeeld om routes en settings en dergelijk in te laden. Eigenlijk zal ik in de praktijk alleen deze verbinding gebruiken, maar mocht er sprake zijn van een 2e of 3e database dan kan ik via de database class gemakkelijk een extra database aanmaken....
 
Niels K

Niels K

19/11/2010 22:43:14
Quote Anchor link
Ok, dus wat is nu het probleem nog? behalve dat ik niet geheel achter je denkwijze sta?
 
Ozzie PHP

Ozzie PHP

19/11/2010 22:50:30
Quote Anchor link
Waarom sta je niet achter mn denkwijze? Wat bedoel je?

Er is verder geen probleem, alleen wat ik zou willen kan blijkbaar niet.
 
Niels K

Niels K

19/11/2010 22:53:59
Quote Anchor link
Ik heb je toch de oplossing gegeven? Of begrijpen wij elkaar nu niet? Nah, ik vind het min of meer raar dat je een database verbinding wilt sluiten doormiddel van het weggooien van een object. Ik bedoel, als je het object niet meer nodig hebt dan gebruik je het toch niet meer? Of unset het zoals ik al zei. Wil je een nieuwe database connectie dan koppel je die toch aan een andere variabele?
Gewijzigd op 19/11/2010 22:54:14 door Niels K
 

Pagina: 1 2 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.