PHP code example of chillerlan / php-settings-container
1. Go to this page and download the library: Download chillerlan/php-settings-container library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
chillerlan / php-settings-container example snippets
#[ThrowOnInvalidProperty(true)]
class MyContainer extends SettingsContainerAbstract{
// ...
}
$container->nope = 'what'; // -> throws: attempt to write invalid property: "$nope"
trait SomeOptions{
protected string $foo;
protected string $what;
// this method will be called in SettingsContainerAbstract::construct()
// after the properties have been set
protected function SomeOptions():void{
// just some constructor stuff...
$this->foo = strtoupper($this->foo);
}
/*
* special prefixed magic setters & getters ("set_"/"get_" + property name)
*/
// this method will be called from __set() when property $what is set
protected function set_what(string $value):void{
$this->what = md5($value);
}
// this method is called on __get() for the property $what
protected function get_what():string{
return 'hash: '.$this->what;
}
}
$commonOptions = [
// SomeOptions
'foo' => 'whatever',
// MoreOptions
'bar' => 'nothing',
];
$container = new class ($commonOptions) extends SettingsContainerAbstract{
use SomeOptions, MoreOptions;
};
var_dump($container->foo); // -> WHATEVER (constructor ran strtoupper on the value)
var_dump($container->bar); // -> nothing
$container->what = 'some value';
var_dump($container->what); // -> hash: 5946210c9e93ae37891dfe96c3e39614 (custom getter added "hash: ")
class PropertyHooksContainer extends SettingsContainerAbstract{
protected string $someValue{
set => doStuff($value);
}
// this method will be ignored in magic calls as a "set" hook on the property exists
protected function set_someValue(string $value):void{
$this->someValue = doOtherStuff($value);
}
// this custom method will be called as the property has no "get" hook
protected function get_someValue():string{
return doWhatever($this->someValue);
}
// this property will never trigger the magic get/set and associated methods
public string $otherValue{
set => doStuff($value);
get => $this->otherValue;
}
}