[OOP] Arrays declareren in klassen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

Dos Moonen

Dos Moonen

19/01/2014 11:45:05
Quote Anchor link
Niet in een catch statement, maar in je error handler. Een interessante hack: http://www.php.net/manual/en/language.oop5.typehinting.php#111411
 
PHP hulp

PHP hulp

24/11/2024 03:01:34
 
Ozzie PHP

Ozzie PHP

19/01/2014 11:50:31
Quote Anchor link
Dos Moonen op 19/01/2014 11:45:05:
Niet in een catch statement, maar in je error handler. Een interessante hack: http://www.php.net/manual/en/language.oop5.typehinting.php#111411

Wat is dit voor vreemde if-constructie met meerdere returns. Hoe werkt zoiets?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
function optimized_strpos($ErrLevel, $ErrMessage) {
         if ($ErrLevel == E_RECOVERABLE_ERROR
             // order this according to what your app uses most
             return strpos($ErrMessage, 'must be an instance of string, string')
                 ||
strpos($ErrMessage, 'must be an instance of integer, integer')
                 ||
strpos($ErrMessage, 'must be an instance of float, double')
                 ||
strpos($ErrMessage, 'must be an instance of boolean, boolean')
                 ||
strpos($ErrMessage, 'must be an instance of resource, resource');
 }

?>
 
Dos Moonen

Dos Moonen

19/01/2014 11:53:06
Quote Anchor link
return (false || false || true || false || false); maar dan met functies inplaats van hard coded booleans.
 
Ozzie PHP

Ozzie PHP

19/01/2014 11:57:56
Quote Anchor link
Ik snap eigenlijk de constructie niet... hoe kun je op basis van 1 if meerdere returns krijgen?
 
Dos Moonen

Dos Moonen

19/01/2014 12:18:43
Quote Anchor link
Er is maar een return.

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

return (true || false);
// is het zelfde alse
return true || false;

// je zou het ook kunnen schrijven als

$a = strpos($ErrMessage, 'must be an instance of string, string');
$b = strpos($ErrMessage, 'must be an instance of integer, integer');
$c = strpos($ErrMessage, 'must be an instance of float, double');
$d = strpos($ErrMessage, 'must be an instance of boolean, boolean');
$e = strpos($ErrMessage, 'must be an instance of resource, resource');

return ($a !== FALSE OR $b !== FALSE OR $c !== FALSE OR $d !== FALSE OR $e !== FALSE OR);

// Mocht strpos ooit 0 returnen dan is het dus duidelijk niet de melding "Argument _nummer_ passed to _functie_ blabla". Dus 0 en FALSE zijn beiden niet wat je wilt, waardoor je het simpeler kan schrijven als

return ($a OR $b OR $c OR $d OR $e);

?>


Die constructie die je ziet is ietsjes effecienter met geheugen omdat je geen variabele aanmaakt.
Gewijzigd op 19/01/2014 12:19:26 door Dos Moonen
 
Ozzie PHP

Ozzie PHP

19/01/2014 12:24:53
Quote Anchor link
Dos, ik snap het nog steeds niet... sorry... :-/

return ($a OR $b OR $c OR $d OR $e);

Wat wil dat zeggen... hoe weet je nu wat er wordt gereturned? Misschien stel ik de vraag een beetje onduidelijk, maar ik zie dus een return met daarin meerdere waardes die kunnen worden gereturned. Wanneer wordt wat gereturned? Dat is eigenlijk mijn vraag... ik kan me niet herinneren dat ik ooit een return heb gezien waarin meerdere opties staan.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

19/01/2014 12:35:23
Quote Anchor link
Waar ging dit topic ook alweer over?
 
Wouter J

Wouter J

19/01/2014 13:38:10
Quote Anchor link
Ozzie, wanneer er iets true-ish (getallen behalve 0, strings behalve lege string, true, etc.) uit komt. strpos returned false wanneer de string niet is gevonden en de positie wanneer die wel is gevonden. Dat wordt dan dus gereturned.
Ik begrijp zelf het hele nut ook niet van die functie trouwens...
 
Dos Moonen

Dos Moonen

19/01/2014 15:57:38
Quote Anchor link
Zoals ik al zei is het een hack: http://3v4l.org/Tl9VT
De reden dat ik het op bracht is omdat het een voorbeeld is dat bewijst dat catchable error niet via een catch block, maar alleen via de geregistreerde error handler op te vangen zijn.

Ik raad niet aan dit te gebruiken, maar het is wel leuk om te weten dat het kan.

PS. wat wel kan is in de error handler de error omzetten in een exception en daarna de exception te catchen. Maar je hebt dus nog steeds een error handler nodig.
Gewijzigd op 19/01/2014 16:48:33 door Dos Moonen
 
Ozzie PHP

Ozzie PHP

19/01/2014 16:28:58
Quote Anchor link
Thanks heren, duidelijk!
 

Pagina: « vorige 1 2



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.