Ajout du FR
Ajout du FR + correction du "functions.php"
This commit is contained in:
38
vendor/ocramius/proxy-manager/src/ProxyManager/GeneratorStrategy/BaseGeneratorStrategy.php
vendored
Normal file
38
vendor/ocramius/proxy-manager/src/ProxyManager/GeneratorStrategy/BaseGeneratorStrategy.php
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
/*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the MIT license.
|
||||
*/
|
||||
|
||||
namespace ProxyManager\GeneratorStrategy;
|
||||
|
||||
use Zend\Code\Generator\ClassGenerator;
|
||||
|
||||
/**
|
||||
* Generator strategy that generates the class body
|
||||
*
|
||||
* @author Marco Pivetta <ocramius@gmail.com>
|
||||
* @license MIT
|
||||
*/
|
||||
class BaseGeneratorStrategy implements GeneratorStrategyInterface
|
||||
{
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function generate(ClassGenerator $classGenerator)
|
||||
{
|
||||
return $classGenerator->generate();
|
||||
}
|
||||
}
|
||||
69
vendor/ocramius/proxy-manager/src/ProxyManager/GeneratorStrategy/EvaluatingGeneratorStrategy.php
vendored
Normal file
69
vendor/ocramius/proxy-manager/src/ProxyManager/GeneratorStrategy/EvaluatingGeneratorStrategy.php
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
/*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the MIT license.
|
||||
*/
|
||||
|
||||
namespace ProxyManager\GeneratorStrategy;
|
||||
|
||||
use Zend\Code\Generator\ClassGenerator;
|
||||
|
||||
/**
|
||||
* Generator strategy that produces the code and evaluates it at runtime
|
||||
*
|
||||
* @author Marco Pivetta <ocramius@gmail.com>
|
||||
* @license MIT
|
||||
*/
|
||||
class EvaluatingGeneratorStrategy implements GeneratorStrategyInterface
|
||||
{
|
||||
/**
|
||||
* @var bool flag indicating whether {@see eval} can be used
|
||||
*/
|
||||
private $canEval = true;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->canEval = ! ini_get('suhosin.executor.disable_eval');
|
||||
}
|
||||
|
||||
/**
|
||||
* Evaluates the generated code before returning it
|
||||
*
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function generate(ClassGenerator $classGenerator)
|
||||
{
|
||||
$code = $classGenerator->generate();
|
||||
|
||||
if (! $this->canEval) {
|
||||
// @codeCoverageIgnoreStart
|
||||
$fileName = sys_get_temp_dir() . '/EvaluatingGeneratorStrategy.php.tmp.' . uniqid('', true);
|
||||
|
||||
file_put_contents($fileName, "<?php\n" . $code);
|
||||
require $fileName;
|
||||
unlink($fileName);
|
||||
|
||||
return $code;
|
||||
// @codeCoverageIgnoreEnd
|
||||
}
|
||||
|
||||
eval($code);
|
||||
|
||||
return $code;
|
||||
}
|
||||
}
|
||||
105
vendor/ocramius/proxy-manager/src/ProxyManager/GeneratorStrategy/FileWriterGeneratorStrategy.php
vendored
Normal file
105
vendor/ocramius/proxy-manager/src/ProxyManager/GeneratorStrategy/FileWriterGeneratorStrategy.php
vendored
Normal file
@@ -0,0 +1,105 @@
|
||||
<?php
|
||||
/*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the MIT license.
|
||||
*/
|
||||
|
||||
namespace ProxyManager\GeneratorStrategy;
|
||||
|
||||
use ProxyManager\Exception\FileNotWritableException;
|
||||
use ProxyManager\FileLocator\FileLocatorInterface;
|
||||
use Zend\Code\Generator\ClassGenerator;
|
||||
|
||||
/**
|
||||
* Generator strategy that writes the generated classes to disk while generating them
|
||||
*
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* @author Marco Pivetta <ocramius@gmail.com>
|
||||
* @license MIT
|
||||
*/
|
||||
class FileWriterGeneratorStrategy implements GeneratorStrategyInterface
|
||||
{
|
||||
/**
|
||||
* @var \ProxyManager\FileLocator\FileLocatorInterface
|
||||
*/
|
||||
protected $fileLocator;
|
||||
|
||||
/**
|
||||
* @var callable
|
||||
*/
|
||||
private $emptyErrorHandler;
|
||||
|
||||
/**
|
||||
* @param \ProxyManager\FileLocator\FileLocatorInterface $fileLocator
|
||||
*/
|
||||
public function __construct(FileLocatorInterface $fileLocator)
|
||||
{
|
||||
$this->fileLocator = $fileLocator;
|
||||
$this->emptyErrorHandler = function () {
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Write generated code to disk and return the class code
|
||||
*
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function generate(ClassGenerator $classGenerator)
|
||||
{
|
||||
$className = trim($classGenerator->getNamespaceName(), '\\')
|
||||
. '\\' . trim($classGenerator->getName(), '\\');
|
||||
$generatedCode = $classGenerator->generate();
|
||||
$fileName = $this->fileLocator->getProxyFileName($className);
|
||||
|
||||
set_error_handler($this->emptyErrorHandler);
|
||||
|
||||
try {
|
||||
$this->writeFile("<?php\n\n" . $generatedCode, $fileName);
|
||||
} catch (FileNotWritableException $fileNotWritable) {
|
||||
restore_error_handler();
|
||||
|
||||
throw $fileNotWritable;
|
||||
}
|
||||
|
||||
restore_error_handler();
|
||||
|
||||
return $generatedCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes the source file in such a way that race conditions are avoided when the same file is written
|
||||
* multiple times in a short time period
|
||||
*
|
||||
* @param string $source
|
||||
* @param string $location
|
||||
*
|
||||
* @throws FileNotWritableException
|
||||
*/
|
||||
private function writeFile($source, $location)
|
||||
{
|
||||
$tmpFileName = $location . '.' . uniqid('', true);
|
||||
|
||||
if (! file_put_contents($tmpFileName, $source)) {
|
||||
throw FileNotWritableException::fromNonWritableLocation($tmpFileName);
|
||||
}
|
||||
|
||||
if (! rename($tmpFileName, $location)) {
|
||||
unlink($tmpFileName);
|
||||
|
||||
throw FileNotWritableException::fromInvalidMoveOperation($tmpFileName, $location);
|
||||
}
|
||||
}
|
||||
}
|
||||
39
vendor/ocramius/proxy-manager/src/ProxyManager/GeneratorStrategy/GeneratorStrategyInterface.php
vendored
Normal file
39
vendor/ocramius/proxy-manager/src/ProxyManager/GeneratorStrategy/GeneratorStrategyInterface.php
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
/*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* This software consists of voluntary contributions made by many individuals
|
||||
* and is licensed under the MIT license.
|
||||
*/
|
||||
|
||||
namespace ProxyManager\GeneratorStrategy;
|
||||
|
||||
use Zend\Code\Generator\ClassGenerator;
|
||||
|
||||
/**
|
||||
* Generator strategy interface - defines basic behavior of class generators
|
||||
*
|
||||
* @author Marco Pivetta <ocramius@gmail.com>
|
||||
* @license MIT
|
||||
*/
|
||||
interface GeneratorStrategyInterface
|
||||
{
|
||||
/**
|
||||
* Generate the provided class
|
||||
*
|
||||
* @param ClassGenerator $classGenerator
|
||||
*
|
||||
* @return string the class body
|
||||
*/
|
||||
public function generate(ClassGenerator $classGenerator);
|
||||
}
|
||||
Reference in New Issue
Block a user