本文整理汇总了PHP中PharData::addFromString方法的典型用法代码示例。如果您正苦于以下问题:PHP PharData::addFromString方法的具体用法?PHP PharData::addFromString怎么用?PHP PharData::addFromString使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PharData
的用法示例。
在下文中一共展示了PharData::addFromString方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: testInstallPluginWithBrokenManager
public function testInstallPluginWithBrokenManager()
{
// インストールするプラグインを作成する
$tmpname = "dummy" . sha1(mt_rand());
$config = array();
$config['name'] = $tmpname;
$config['code'] = $tmpname;
$config['version'] = $tmpname;
$tmpdir = $this->createTempDir();
$tmpfile = $tmpdir . '/plugin.tar';
$tar = new \PharData($tmpfile);
$tar->addFromString('config.yml', Yaml::dump($config));
$dummyManager = <<<'EOD'
<?php
namespace Plugin\@@@@ ;
use Eccube\Plugin\AbstractPluginManager;
class PluginManager extends AbstractPluginManager
{
public function install($plugin,$app)
{
throw new \Exception('hoge',1);
}
}
EOD;
$dummyManager = str_replace('@@@@', $tmpname, $dummyManager);
// イベントクラス名はランダムなのでヒアドキュメントの@@@@部分を置換
$tar->addFromString("PluginManager.php", $dummyManager);
$service = $this->app['eccube.service.plugin'];
try {
$this->assertTrue($service->install($tmpfile));
$this->fail("BrokenManager dont throw exception.");
} catch (\Exception $e) {
}
// インストーラで例外発生時にテーブルやファイスシステム上にゴミが残らないか
$this->assertFileNotExists(__DIR__ . "/../../../../app/Plugin/{$tmpname}");
// XXX PHPUnit によってロールバックが遅延してしまうので, 検証できないが, 消えているはず
$this->assertFalse((bool) ($plugin = $this->app['eccube.repository.plugin']->findOneBy(array('name' => $tmpname))));
}
示例2: addFileFromString
/**
* @param $content
* @param $name
* @param string $directoryInArchive
* @return mixed
* @throws \ErrorException
*
* This method creates a file in the archive with its content
*/
public function addFileFromString($content, $name, $directoryInArchive = "/")
{
if (empty($name) || !is_scalar($name)) {
throw new \ErrorException($this->translator->trans("The file name must be valid"));
}
$directoryInArchive = $this->formatDirectoryPath($directoryInArchive);
if (!empty($directoryInArchive)) {
$name = $this->formatFilePath($directoryInArchive . $name);
}
try {
$this->tar->addFromString($name, $content);
} catch (\Exception $e) {
throw new \ErrorException($this->translator->trans("Error while writing the file into the archive, error message: %errmes", ["%errmes" => $e->getMessage()]));
}
}
示例3: package_release_by_upload
/**
* ファイルアップロードからリリース
* @param string $package_name パッケージ名
**/
public function package_release_by_upload($package_name)
{
$package = C(OpenpearPackage)->find_get(Q::eq('name', $package_name));
$package->permission($this->user());
if ($this->is_post() && $this->is_files('package_file') && $this->verify()) {
try {
$package_file = $this->in_files('package_file');
$package_file->generate(work_path('upload/' . $package_name . '-' . date('YmdHis') . '.tgz'));
if ($package_xml = simplexml_load_file(sprintf('phar://%s/package.xml', $package_file->fullname()))) {
if ($package_xml->name != $package->name()) {
throw new OpenpearException(Gettext::trans('incorrect package name'));
}
if ($package_xml->channel != OpenpearConfig::pear_domain('openpear.org')) {
$package_xml->channel = OpenpearConfig::pear_domain('openpear.org');
$pd = new PharData($package_file->fullname());
$pd->addFromString('package.xml', $package_xml->asXML());
unset($pd);
}
$upload_queue = new stdClass();
$upload_queue->package_id = $package->id();
$upload_queue->package_file = $package_file->fullname();
$upload_queue->maintainer_id = $this->user()->id();
$queue = new OpenpearQueue('type=upload_release');
$queue->data(serialize($upload_queue));
$queue->save();
$message = new OpenpearMessage('type=system_notice,mail=false');
$message->maintainer_to_id($this->user()->id());
$message->subject(trans('リリースキューに追加されました'));
$message->description(trans('{1}のリリースを受け付けました。リリースの完了後,メールでお知らせします。', $package->name()));
$message->save();
$this->redirect_by_map('dashboard');
}
} catch (Exception $e) {
Log::debug($e);
Exceptions::add($e);
}
}
$this->vars('package', $package);
$this->vars('package_id', $package->id());
}
示例4: dirname
<?php
$fname = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.tar';
$fname2 = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.2.tar';
$phar = new PharData($fname);
$phar->addEmptyDir('blah/');
$phar->addFromString('test/', '');
copy($fname, $fname2);
$phar = new PharData($fname2);
var_dump($phar['blah']->isDir(), $phar['test']->isDir());
?>
===DONE===
<?php
error_reporting(0);
unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.tar');
unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.2.tar');
__halt_compiler();
?>
示例5: mkdirs
mkdirs("{$mRoot}/template");
if ($m['application']['setting']) {
f_write("{$mRoot}/template/setting.html", "{template 'common/header'}\r\n这里定义页面内容\r\n{template 'common/footer'}");
}
if ($m['icon']) {
file_move($m['icon'], "{$mRoot}/icon.jpg");
}
if ($m['preview']) {
file_move($m['preview'], "{$mRoot}/preview.jpg");
}
message("生成成功. 请访问 {$mRoot} 继续实现你的模块.", 'refresh');
}
if ($_GPC['method'] == 'download') {
$fname = IA_ROOT . "/data/tmp.tar";
$phar = new PharData($fname);
$phar->addFromString('/manifest.xml', $manifest);
if ($mDefine) {
$phar->addFromString('/module.php', $mDefine);
}
if ($pDefine) {
$phar->addFromString('/processor.php', $pDefine);
}
if ($rDefine) {
$phar->addFromString('/receiver.php', $rDefine);
}
if ($sDefine) {
$phar->addFromString('/site.php', $sDefine);
}
$phar->addEmptyDir('/template');
if ($m['application']['setting']) {
$phar->addFromString("/template/setting.html", "{template 'common/header'}\r\n这里定义页面内容\r\n{template 'common/footer'}");
示例6: testInstallPluginWithConst
public function testInstallPluginWithConst()
{
// インストールするプラグインを作成する
$tmpname = "dummy" . sha1(mt_rand());
$config = array();
$config['name'] = $tmpname . "_name";
$config['code'] = $tmpname;
$config['version'] = $tmpname . "_version";
$config['const']['A'] = 'A';
$config['const']['C'] = 1;
$tmpdir = $this->createTempDir();
$tmpfile = $tmpdir . '/plugin.tar';
$tar = new \PharData($tmpfile);
$tar->addFromString('config.yml', Yaml::dump($config));
$service = $this->app['eccube.service.plugin'];
// インストールできるか
$this->assertTrue($service->install($tmpfile));
$this->assertTrue((bool) ($plugin = $this->app['eccube.repository.plugin']->findOneBy(array('code' => $tmpname))));
// インストール後disable状態でもconstがロードされているか
$config = $this->app['config'];
$config[$tmpname]['const']['A'] = null;
$config[$tmpname]['const']['C'] = null;
// const が存在しないのを確認後, 再ロード
$this->assertFalse(isset($this->app['config'][$tmpname]['const']['A']));
$this->assertFalse(isset($this->app['config'][$tmpname]['const']['C']));
$this->app->initializePlugin();
$this->app->boot();
$this->assertEquals('A', $this->app['config'][$tmpname]['const']['A']);
$this->assertEquals('1', $this->app['config'][$tmpname]['const']['C']);
// アンインストールできるか
$this->assertTrue($service->uninstall($plugin));
}
示例7: addPackHash
/**
* Create list of archive file hashes and add it to the pack
*
* @param \PharData $phar PHAR archive
* @param \Iterator $iterator Directory iterator
*
* @return void
*/
protected static function addPackHash(\PharData $phar, \Iterator $iterator)
{
$data = array();
foreach ($iterator as $filePath => $fileInfo) {
$data[\Includes\Utils\FileManager::getRelativePath($filePath, LC_DIR_ROOT)] = \Includes\Utils\FileManager::getHash($filePath);
}
$phar->addFromString('.hash', json_encode($data));
}
示例8: downloadSensorML
/**
* get file content from id
* @NoCSRFRequired
* @PublicPage
*/
public function downloadSensorML($uuid)
{
$systems = $this->systemMapper->getByUuid($uuid);
if ($systems !== null) {
$fileIds = array();
$resultFiles = new \PharData(sys_get_temp_dir() . "/{$uuid}.zip");
foreach ($systems as $system) {
$fileId = $system->getFileId();
if (!in_array($fileId, $fileIds)) {
$fileIds[] = $fileId;
$cacheInfo = FileCacheDao::getCacheInfo($fileId);
if ($cacheInfo !== null) {
$fileInfo = FileCacheDao::getFileInfo($cacheInfo['storage'], $cacheInfo['path'], $system->getPharPath());
$content = FileCacheDao::getContentByUrn($fileInfo['urn']);
$resultFiles->addFromString($uuid . "_" . $fileId . ".xml", $content);
}
}
}
$fullPath = $resultFiles->getPath();
if ($fd = fopen($fullPath, "r")) {
$path_parts = pathinfo($fullPath);
header("Content-type: application/octet-stream");
header("Content-Disposition: filename=\"" . $path_parts["basename"] . "\"");
while (!feof($fd)) {
$buffer = fread($fd, 2048);
echo $buffer;
}
}
fclose($fd);
}
return new NotFoundResponse();
}
示例9: testPluginConfigCache
/**
* プラグイン設定ファイルキャッシュの検証
*/
public function testPluginConfigCache()
{
$this->app['debug'] = false;
$pluginConfigCache = $this->app['config']['plugin_temp_realdir'] . '/config_cache.php';
// 事前にキャッシュを削除しておく
if (file_exists($pluginConfigCache)) {
unlink($pluginConfigCache);
}
// インストールするプラグインを作成する
$tmpname = "dummy" . sha1(mt_rand());
$config = array();
$config['name'] = $tmpname . "_name";
$config['code'] = $tmpname;
$config['version'] = $tmpname . "_version";
$config['const']['A'] = 'A';
$config['const']['C'] = 1;
$event = array('eccube.event.app.request' => array(0 => array(0 => 'onAppRequest', 1 => 'NORMAL')));
$tmpdir = $this->createTempDir();
$tmpfile = $tmpdir . '/plugin.tar';
$tar = new \PharData($tmpfile);
$tar->addFromString('config.yml', Yaml::dump($config));
$tar->addFromString('event.yml', Yaml::dump($event));
$service = $this->app['eccube.service.plugin'];
// インストールできるか
$this->assertTrue($service->install($tmpfile));
$this->assertTrue((bool) ($plugin = $this->app['eccube.repository.plugin']->findOneBy(array('code' => $tmpname))));
$this->expected = $pluginConfigCache;
$this->actual = $this->app->getPluginConfigCacheFile();
$this->verify('キャッシュファイル名が一致するか');
$pluginConfigs = $this->app->parsePluginConfigs();
$this->assertTrue(array_key_exists($tmpname, $pluginConfigs));
$this->expected = $config;
$this->actual = $pluginConfigs[$tmpname]['config'];
$this->verify('parsePluginConfigs の結果が一致するか');
$this->assertTrue(false !== $this->app->writePluginConfigCache(), 'キャッシュファイルが書き込まれるか');
$this->assertTrue(file_exists($pluginConfigCache), 'キャッシュファイルが存在するか');
$this->assertTrue($this->app->removePluginConfigCache(), 'キャッシュファイルを削除できるか');
$this->assertFalse(file_exists($pluginConfigCache), 'キャッシュファイルが削除されているか');
$pluginConfigs = $this->app->getPluginConfigAll();
$this->assertTrue(file_exists($pluginConfigCache), 'キャッシュファイルが再生成されているか');
$this->expected = $config;
$this->actual = $pluginConfigs[$tmpname]['config'];
$this->verify('getPluginConfigAll の結果が一致するか');
// インストール後disable状態でもconstがロードされているか
$config = $this->app['config'];
$config[$tmpname]['const']['A'] = null;
$config[$tmpname]['const']['C'] = null;
// const が存在しないのを確認後, 再ロード
$this->assertFalse(isset($this->app['config'][$tmpname]['const']['A']));
$this->assertFalse(isset($this->app['config'][$tmpname]['const']['C']));
$this->app->initPluginEventDispatcher();
$this->app->loadPlugin();
$this->app->boot();
$this->assertEquals('A', $this->app['config'][$tmpname]['const']['A']);
$this->assertEquals('1', $this->app['config'][$tmpname]['const']['C']);
// アンインストールできるか
$this->assertTrue($service->uninstall($plugin));
$pluginConfigs = $this->app->getPluginConfigAll();
$this->assertFalse(array_key_exists($tmpname, $pluginConfigs), 'キャッシュからプラグインが削除されているか');
}
示例10: testInstallPluginWithManager
public function testInstallPluginWithManager()
{
#self::markTestSkipped();
// インストールするプラグインを作成する
$tmpname = "dummy" . sha1(mt_rand());
$config = array();
$config['name'] = $tmpname;
$config['code'] = $tmpname;
$config['version'] = $tmpname;
$tmpdir = $this->createTempDir();
$tmpfile = $tmpdir . '/plugin.tar';
$tar = new \PharData($tmpfile);
$tar->addFromString('config.yml', Yaml::dump($config));
$dummyManager = <<<'EOD'
<?php
namespace Plugin\@@@@ ;
use Eccube\Plugin\AbstractPluginManager;
class PluginManager extends AbstractPluginManager
{
public function install($plugin,$app)
{
echo "Installed";
}
public function uninstall($config,$app)
{
echo "Uninstalled";
}
public function enable($config,$app)
{
echo "Enabled";
}
public function disable($config,$app)
{
echo "Disabled";
}
public function update($config,$app)
{
echo "Updated";
}
}
EOD;
$dummyManager = str_replace('@@@@', $tmpname, $dummyManager);
// イベントクラス名はランダムなのでヒアドキュメントの@@@@部分を置換
$tar->addFromString("PluginManager.php", $dummyManager);
$service = $this->app['eccube.service.plugin'];
// インストールできるか、インストーラが呼ばれるか
ob_start();
$this->assertTrue($service->install($tmpfile));
$this->assertRegexp('/InstalledEnabled/', ob_get_contents());
ob_end_clean();
$this->assertFileExists(__DIR__ . "/../../../../app/Plugin/{$tmpname}/PluginManager.php");
$this->assertTrue((bool) ($plugin = $this->app['eccube.repository.plugin']->findOneBy(array('name' => $tmpname))));
ob_start();
$service->enable($plugin);
$this->assertRegexp('/Enabled/', ob_get_contents());
ob_end_clean();
ob_start();
$service->disable($plugin);
$this->assertRegexp('/Disabled/', ob_get_contents());
ob_end_clean();
// アンインストールできるか、アンインストーラが呼ばれるか
ob_start();
$service->disable($plugin);
$this->assertTrue($service->uninstall($plugin));
$this->assertRegexp('/DisabledUninstalled/', ob_get_contents());
ob_end_clean();
}