PHP wetenswaardigheden

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ad Fundum

Ad Fundum

22/04/2021 16:00:54
Quote Anchor link
Nou programmeer ik alweer een aantal jaren PHP, en ik dacht dat ik meeste toch al wel onder de knie had.

Toch blijft PHP verrassen.
Zo heeft PHPHulp mij helpen herinneren aan een verschil in werking tussen de operatoren "&&" en "and".
En vandaag ben ik er achter dat namen van klassen ongevoelig zijn voor hoofd- en kleine letters (autoloaders?).

Wat is het meest opmerkelijke wat jij bent tegengekomen, en hoe heb je dat opgelost?
 
PHP hulp

PHP hulp

28/03/2024 16:01:21
 
- Ariën  -
Beheerder

- Ariën -

22/04/2021 17:06:53
Quote Anchor link
Dat er een functie bestaat om de zonsopgang/-ondergang te berekenen aan de hand van coördinaten en de zenith (check docs).

https://www.php.net/manual/en/function.date-sunset.php
https://www.php.net/manual/en/function.date-sunrise.php

Werkt prima overigens.
Gewijzigd op 22/04/2021 17:07:30 door - Ariën -
 
Rob Doemaarwat

Rob Doemaarwat

22/04/2021 20:41:29
Quote Anchor link
ReflectionObject - daar heb ik een hele mooie debug error handler mee kunnen maken (debug_backtrace() "aankleden").
 
Ward van der Put
Moderator

Ward van der Put

24/04/2021 08:38:41
Quote Anchor link
Sommige keuzen in PHP verbazen me vooral.

Bijvoorbeeld dat je, vereenvoudigd, dit ontwerp ...
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
declare(strict_types=1);

class User
{
    public ?string $firstName = null;
}

?>


... zo kunt gebruiken ...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$user
= new User();
$user->firstName = 'John';
$user->lastName = 'Doe';
?>
 
Ad Fundum

Ad Fundum

26/04/2021 09:48:47
Quote Anchor link
Ik kwam laatst iets tegen: als je twee grote gehele getallen optelt, gebeurt er iets vreemds:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$v
= PHP_INT_MAX;  // $v is een integer
var_dump($v);
$v++;              // $v wordt een float?
var_dump($v);
?>
Gewijzigd op 26/04/2021 09:52:27 door Ad Fundum
 
- Ariën  -
Beheerder

- Ariën -

26/04/2021 09:53:52
Quote Anchor link
Strings als array's behandelen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$string
="PHPhulp for teh win";
echo $string[3]; // geeft 'h'
?>
 
Thom nvt

Thom nvt

26/04/2021 10:53:30
Quote Anchor link
Ad Fundum op 26/04/2021 09:48:47:
Ik kwam laatst iets tegen: als je twee grote gehele getallen optelt, gebeurt er iets vreemds:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$v
= PHP_INT_MAX;  // $v is een integer
var_dump($v);
$v++;              // $v wordt een float?
var_dump($v);
?>

Dit is daadwerkelijk gedefinieerd gedrag van PHP. Zodra nummers erg groot worden (groter dan in een INT past) maakt de interpreter er automatisch een float van.

- Ariën - op 26/04/2021 09:53:52:
Strings als array's behandelen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$string
="PHPhulp for teh win";
echo $string[3]; // geeft 'h'
?>

Dit is omdat PHP op C is gebouwd waar een String niets meer is dan een array van chars ;)

Er zijn heel veel leuke (en minder leuke) truukjes mogelijk met PHP, grotendeels omdat het loose-typed is (denk aan de werking van autoloaders bijvoorbeeld).
Zo kun je on-the-fly een HATEOAS API uitlezen en intreperteren, met Reflection code genereren om deze af te handelen en de resulterende code naar het filesystem schrijven om bij een volgend request te hergebruiken (soort van "caching" dus). Of je dat moet willen is een tweede natuurlijk.
 
Ad Fundum

Ad Fundum

26/04/2021 16:36:50
Quote Anchor link
Nou, uitgerekend geldt het dan weer niet voor autoloaders, want namen van classes zijn case insensitive. En bij voorgedefineerde defines als true en TRUE. Maar als je ze zelf wilt defineren met define(), dan moet je juist case sensitive declareren. Want: "Defining case-insensitive constants is deprecated as of PHP 7.3.0."
Gelukkig is de rest, zoals variabele namen wel case sensitive.

En die chars moet je ook even goed bij stilstaan. Wat als je je .php-bestand opslaat als UTF-8, en je doet dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$naam
= 'cliënt';
print $naam[3];  // print ë... toch? of niet?
?>

Leuk om te lezen over HATEOAS! Ik wist niet dat wat ik aan het doen was een naam had en al sinds 2008 bestond.
Gewijzigd op 26/04/2021 16:44:06 door Ad Fundum
 



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.