array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'it', ), 'this' => array ( 0 => 'phar.offsetset.php', 1 => 'Phar::offsetSet', 2 => 'Set the contents of an internal file to those of an external file', ), 'up' => array ( 0 => 'class.phar.php', 1 => 'Phar', ), 'prev' => array ( 0 => 'phar.offsetget.php', 1 => 'Phar::offsetGet', ), 'next' => array ( 0 => 'phar.offsetunset.php', 1 => 'Phar::offsetUnset', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'en', 'path' => 'reference/phar/Phar/offsetSet.xml', ), 'history' => array ( ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); contributors($setup); ?>
(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)
Phar::offsetSet — Set the contents of an internal file to those of an external file
Nota:
This method requires the php.ini setting
phar.readonly
to be set to0
in order to work for Phar objects. Otherwise, a PharException will be thrown.
This is an implementation of the ArrayAccess interface allowing direct manipulation of the contents of a Phar archive using array access brackets. offsetSet is used for modifying an existing file, or adding a new file to a Phar archive.
localName
The filename (relative path) to modify in a Phar.
value
Content of the file.
No return values.
if phar.readonly is 1
,
BadMethodCallException is thrown, as modifying a Phar
is only allowed when phar.readonly is set to 0
. Throws
PharException if there are any problems flushing
changes made to the Phar archive to disk.
Example #1 A Phar::offsetSet() example
offsetSet should not be accessed directly, but instead used
via array access with the []
operator.
<?php
$p = new Phar('/path/to/my.phar', 0, 'my.phar');
try {
// calls offsetSet
$p['file.txt'] = 'Hi there';
} catch (Exception $e) {
echo 'Could not modify file.txt:', $e;
}
?>
Nota: Phar::addFile(), Phar::addFromString() and Phar::offsetSet() save a new phar archive each time they are called. If performance is a concern, Phar::buildFromDirectory() or Phar::buildFromIterator() should be used instead.