How do you document model attributes implemented using synchronous accessor methods?
Example - bare model, no documentation:
class Contact
{
protected $phone;
public function getPhone() {
<?php | |
// anonymous classes are both instances and types. huh? what? | |
$type = new class { | |
public function foo() { | |
echo "YAY"; | |
} | |
}; |
<?php | |
function kthxbai() { | |
$result = "hey"; | |
try { | |
return $result; | |
} finally { | |
$result = "dafuq"; | |
} |
<?php | |
class Container | |
{ | |
/** @var Closure[] */ | |
private $factories = []; | |
/** @var array */ | |
private $components = []; |
How do you document model attributes implemented using synchronous accessor methods?
Example - bare model, no documentation:
class Contact
{
protected $phone;
public function getPhone() {
/// This interface defines an event listener | |
interface IListener<Event> { | |
(event: Event): void | |
} | |
/// This interface represents an event hook | |
interface IHook<Event> { | |
/// Attach a handler to this hookable | |
(handler: IListener<Event>): void |
/// This interface defines an event listener | |
interface Listener<Event> { | |
(event: Event): void | |
} | |
/// This interface represents a hookable type | |
interface Hookable<Event> { | |
/// Attach a handler to this hookable | |
(handler: Listener<Event>): void | |
} |
This page provides a full overview of PHP's SessionHandler
life-cycle - this was generated by a set of test-scripts, in order to provide an exact overview of when and
what you can expect will be called in your custom SessionHandler
implementation.
Each example is a separate script being run by a client with cookies enabled.
To the left, you can see the function being called in your script, and to the right, you can see the resulting calls being made to a custom session-handler registed using session_set_save_handler().
type Handler<TEvent> = (event: TEvent) => void; | |
interface Hook<TEvent> { | |
(handler: Handler<TEvent>): void; | |
send(event: TEvent): void; | |
} | |
function hook<TEvent>(): Hook<TEvent> { | |
const handlers: Array<Handler<TEvent>> = []; |
/** | |
* Basic UUID v4 creator | |
*/ | |
abstract class UUID | |
{ | |
/** | |
* @type string path to the dev/urandom device on Linux | |
*/ | |
const DEV_URANDOM = '/dev/urandom'; |