This in the news today: A simple PHP script that can be used to add a DoH endpoint to a HTTPS server.
Tag Archives: php
Streams in PHP
Today I came across A Guide to Streams in PHP: In-Depth Tutorial With Examples.
Learn X in Y minutes
Today on r/programming: Learn X in Y minutes — looks like a great resource! I read the PHP notes, they were good. Comprehensive and to the point.
No meta characters in regex character classes
Today while reading Writing better Regular Expressions in PHP I learned that meta characters are treated as literals in character classes. So '/^(\d[.]\d)$/'
will match '1.2'
but not '1x2'
. Who knew!?
String validation in PHP
Learn about character type checking and filter_var. I bumped into these while reading Writing better Regular Expressions in PHP.
John’s PHP Extension library
Note to self: my PHP extension is here: jj5@tact:/home/jj5/repo/git/git.php.net/php-src/ext/pext
The .so file (shared object) is in modules/pext.so
I linked it in like this:
------------------- Sun May 23 13:44:22 root@tact:/usr/lib/php/20170718 # ln -s /home/jj5/repo/git/git.php.net/php-src/ext/pext/modules/pext.so . -------------------
Configured it like this:
------------------- Sun May 23 13:44:47 root@tact:/usr/lib/php/20170718 # cat /etc/php/7.2/cli/conf.d/pext.ini extension=pext.so -------------------
And I can build it like this:
------------------- Sun May 23 13:51:37 jj5@tact:/home/jj5/repo/git/git.php.net/php-src/ext/pext $ make clean && make
Getting Started with PHP Extension Development via PHP-CPP
Today I found Getting Started with PHP Extension Development via PHP-CPP which talks about what it says on the label. But then some more searching revealed a more direct alternative: How to Create a PHP C Extension to Manipulate Arrays – Part 1: Basic Array Class Extension
PHP in 2021
A nice write up on PHP’s recent successes: PHP in 2021.
PHP prepared statements and stored procedures
Here’s some good documentation on PHP prepared statements and stored procedures including how to call stored procedures with output parameters.
Do you need to call PDOStatement::closeCursor when you’re done with the statement?
The answer is no, so long as you’re not preparing to execute the statement again. I figured this out by looking at the code for PDOStatement::closeCursor and the MySQL implementation. Seems to me that all the freeing necessary is done in the destructor so if you’re not planning to use the statement again it seems to me that you can safely omit the call to PDOStatement::closeCursor(). On the other hand if you are going to reuse the statement calling closeCursor seems like it’s a pretty important thing to do. It would be nice if PDOStatement::fetchAll() called closeCursor() for us, but I don’t think it does.