I guess the PHP documentation is wrong then. Look at this: https://www.php.net/manual/en/function.hash-init.php
For anyone curious PHP ultimately uses this definition in their introduction portion of the hash extension:
> This extension provides functions that can be used for direct or incremental processing of arbitrary length messages using a variety of hashing algorithms, including the generation of HMAC values and key derivations including HKDF and PBKDF2.
That page includes an example that shows PHP's incremental hashing is what you describe as "dysfunctional". It hashes "The quick brown fox jumped over the lazy dog." in 1 part, and in 2 parts, and shows that the resulting hashes are equal.