r/programminghorror Jun 11 '26

PHP PHP#

Post image
212 Upvotes

31 comments sorted by

87

u/mjec Jun 11 '26

It was supposed to be a surprise that PHP 9 ships with the .NET CLR!

17

u/Sacaldur Jun 11 '26

How good, before it was a separate installation! https://www.php.net/manual/en/class.dotnet.php

(I only found this when trying to make sense of the code snippet and looking around on the internet.)

8

u/CanadianButthole Jun 12 '26

What the fuck!?

4

u/Dealiner Jun 12 '26

There's also PeachPie - PHP to .NET compiler.

32

u/drcforbin Jun 11 '26

Just keep setting Id until you get it where you want it to be. Being PHP, I recommend avoiding a loop and just hardcode it, preferably over and over across many lines with random indention.

16

u/Excellent_Gas3686 Jun 11 '26

indentation, are you crazy?! that will make the algorithm at least O(n^6)!

40

u/Sacaldur Jun 11 '26

I was fortunate enough to recently have been allowed to work on a PHP project. I am very experienced with C#. Yet I'm still struggling to make sense of this code snippet. Is this valid PHP? Does it run inside .net? What is public private? (Is it only making the setter private?)

And fun fact, it seems like there is a dotnet class in PHP in order to interact with .net classes: https://www.php.net/manual/en/class.dotnet.php

35

u/EmDeeTeeVid Jun 11 '26

It is actually valid PHP! 8.4 to be exact, this is the version that introduced "Property hooks" (https://www.php.net/manual/en/language.oop5.property-hooks.php)

7

u/GoddammitDontShootMe [ $[ $RANDOM % 6 ] == 0 ] && rm -rf / || echo “You live” Jun 11 '26

I was really wondering what the fuck public private was myself.

9

u/TorbenKoehn Jun 12 '26

That's why it's public private(set) and not just public private

30

u/WorldlyMacaron65 Jun 11 '26

PHP really is an underdog story. From an unreadable, buggy mess of a language to maybe the most pleasant progressively-typed scripting language around

9

u/Stratimus Jun 11 '26

PHP is legitimately pretty great. it’s been my goto language for quick scripts and command line stuff for years. Like any language it can look good or bad. Helped that I came from Perl though

7

u/Sacaldur Jun 11 '26

In the PHP project I worked on I did inteoduce PHPStan (static code analysis tool) with an integration into the IDE and brought it up to level 8 (out of 10, the higher the level the stricter the checks). I still prefer other languages, and there were still a few quirks, but it was fine working with it like that, since it ensured that type hints where present basically everywhere and also that variables where used according to the types.

3

u/Cootshk Jun 12 '26

I presume public private is similar to Kotlin’s

public var id: Int
private set

7

u/bem981 Jun 11 '26

I thought it was c# until I realized it…

13

u/W00GA Jun 11 '26

this looks made up

wtf is a public private

17

u/Max-P Jun 12 '26

It's public getter, private setter.

7

u/ThePsychopaths Jun 12 '26

Everything is made up

2

u/W00GA Jun 12 '26

u included?

1

u/Effective_Celery_515 Jun 13 '26

Task failed successfully.

1

u/Extreme_Dependent_63 Jun 14 '26

So the Id property is access-modifiers fluid? 🤡

1

u/TheMaleGazer Jun 16 '26

public private?

I don't want to know. I don't care, anymore. I won't care about anything ever again. The culmination of millions of years of refinement since Australopithecus afarensis roamed the Pliocene savannahs is a world with websites running on PHP.

1

u/KaleidoscopePlusPlus Jun 11 '26

I have never touched php in my life (thankfully). Why do class variables have to be prefixed with a dollar sign? Seems really redundant

8

u/GoddammitDontShootMe [ $[ $RANDOM % 6 ] == 0 ] && rm -rf / || echo “You live” Jun 11 '26

Heritage from languages like Perl and Bash.

6

u/rurikTelmonkin Jun 11 '26

Because variables in general start with a dollar sign. Its how you differentiate between variable, constant and function use

2

u/Lumethys Jun 12 '26

Correction: all variables are prefixed with $, that how the language define variable

-3

u/KaleidoscopePlusPlus Jun 12 '26

Oh gross thats even worse lol

5

u/Lumethys Jun 12 '26

personal taste, i liked it

1

u/geek-49 Jun 14 '26

That convention goes back at least as far as the Bourne shell; maybe even to the Thompson shell.