if ( $zip->open('./wp-content/uploads/myzip.zip', ZipArchive::CREATE) !== true) {
throw new \RuntimeException("Cannot open file");
}
interface MessageProviderInterface {
public function sendMessage($from, $to, $text);
}
class Email implements MessageProviderInterface{}
class File implements MessageProviderInterface{}
class NewService {
private MessageProviderInterface $provider;
public function __construct(MessageProviderInterface $provider) {
$this->provider = $provider;
}
}
$provider = getenv('ENV') === 'DEBUG' ? new FileProvider() : new EmailProvider();
$service = new NewService($provider);
<module: (?!test)\w+>/<controller: \w+ >
class Test{
private $id = 10;
public function __get( $name ){
$name = ucfirst($name);
return call_user_func( [ $this, "get{$name}"] );
}
public function getId(){
return $this->id * 10;
}
}
$t = new Test();
echo $t->id; // Out 100
Это совсем утрированный пример. Так можно getId сделать protected или private. и внутри метода творить что угодно. а ощущение будет что обращаются к свойству. Ну и т.д. c __isset __unset __set и прочими.
__sleep __wakeup ещё не доводилось на практике использовать, но где-то несомненно могут понадобятся.
<script src="http://yastatic.net/jquery/2.1.4/jquery.min.js"></script>
<script src="http://yastatic.net/jquery/cookie/1.0/jquery.cookie.min.js"></script>
<script type="text/javascript">
$(function() {
// Проверяем запись в куках о посещении
// Если запись есть - ничего не делаем
if (!$.cookie('hideModal')) {
// если cookie не установлено появится окно
// с задержкой 5 секунд
var delay_popup = 5000;
setTimeout("document.getElementById('overlay').style.display='block'", delay_popup);
}
// Запоминаем в куках, что посетитель уже заходил
$.cookie('hideModal', true, {
// Время хранения cookie в днях
expires: 7,
path: '/'
});
});
</script>
data: { xmlString: xml },
public void Form(string xmlString)
<input type="hidden" name="changeprefix">
[
'name' => 'Ник',
'prefix' => 'prefix',
'changeprefix' => '',
]