Enumerations on PHP

Depending upon use case, I would normally use something simple like the following: abstract class DaysOfWeek { const Sunday = 0; const Monday = 1; // etc. } $today = DaysOfWeek::Sunday; However, other use cases may require more validation of constants and values. Based on the comments below about reflection, and a few other notes, … Read more

UTF-8 all the way through

Data Storage: Specify the utf8mb4 character set on all tables and text columns in your database. This makes MySQL physically store and retrieve values encoded natively in UTF-8. Note that MySQL will implicitly use utf8mb4 encoding if a utf8mb4_* collation is specified (without any explicit character set). In older versions of MySQL (< 5.5.3), you’ll … Read more

How do you use bcrypt for hashing passwords in PHP? [duplicate]

bcrypt is a hashing algorithm which is scalable with hardware (via a configurable number of rounds). Its slowness and multiple rounds ensures that an attacker must deploy massive funds and hardware to be able to crack your passwords. Add to that per-password salts (bcrypt REQUIRES salts) and you can be sure that an attack is … Read more

“Notice: Undefined variable”, “Notice: Undefined index”, “Warning: Undefined array key”, and “Notice: Undefined offset” using PHP

Notice / Warning: Undefined variable From the vast wisdom of the PHP Manual: Relying on the default value of an uninitialized variable is problematic in the case of including one file into another which uses the same variable name. It is also a major security risk with register_globals turned on. E_NOTICE level error is issued … Read more

How to Sort a Multi-dimensional Array by Value

Try a usort. If you are still on PHP 5.2 or earlier, you’ll have to define a sorting function first: function sortByOrder($a, $b) { return $a[‘order’] – $b[‘order’]; } usort($myArray, ‘sortByOrder’); Starting in PHP 5.3, you can use an anonymous function: usort($myArray, function($a, $b) { return $a[‘order’] – $b[‘order’]; }); And finally with PHP 7 … Read more

Difference between require, include, require_once and include_once?

There are require and include_once as well. So your question should be… When should I use require vs. include? When should I use require_once vs. require The answer to 1 is described here. The require() function is identical to include(), except that it handles errors differently. If an error occurs, the include() function generates a … Read more

startsWith() and endsWith() functions in PHP

PHP 8.0 and higher Since PHP 8.0 you can use the str_starts_with Manual and str_ends_with Manual Example echo str_starts_with($str, ‘|’); PHP before 8.0 function startsWith( $haystack, $needle ) { $length = strlen( $needle ); return substr( $haystack, 0, $length ) === $needle; } function endsWith( $haystack, $needle ) { $length = strlen( $needle ); if( … Read more

How do I get PHP errors to display?

This always works for me: ini_set(‘display_errors’, ‘1’); ini_set(‘display_startup_errors’, ‘1’); error_reporting(E_ALL); However, this doesn’t make PHP to show parse errors – the only way to show those errors is to modify your php.ini with this line: display_errors = on (if you don’t have access to php.ini, then putting this line in .htaccess might work too): php_flag … Read more