コード例 #1
0
ファイル: Compiler.php プロジェクト: mast3rpee/blw
 /**
  * Constructor
  *
  * @throws \BLW\Model\InvalidArgumentException
  *            If:
  *
  * <ul>
  * <li><code>$BuildPath</code> Is not a writable directory.</li>
  * <li><code>$RootPath</code> Is not a readable directory.</li>
  * <li><code>$TempPath</code> Is not a writable directory.</li>
  * </ul>
  *
  * @param \BLW\Type\IFile $BuildPath
  *            Directory to store compiled resouces.
  * @param \BLW\Type\IFile $RootPath
  *            [optional] Base path of compiler. <code>NULL</code> for current directory.
  * @param \BLW\Type\IFile $TempPath
  *            [optional] Directory to store temporary files. <code>NULL</code> for sys_get_temp_dir().
  * @param \BLW\Type\IMediator $Mediator
  *            [optional] Mediator for compiler.
  */
 public function __construct(IFile $BuildPath, IFile $RootPath = null, IFile $TempPath = null, IMediator $Mediator = null)
 {
     // Is $RootPath null?
     if (!$RootPath) {
         // Default
         $RootPath = new GenericFile(getcwd());
     }
     // Is $TempPath null
     if (!$TempPath) {
         $TempPath = new GenericFile(sys_get_temp_dir());
     }
     // Is $BuildPath a writable?
     if (!$BuildPath->isWritable()) {
         throw new InvalidArgumentException(0, '%header% $BuildPath is not writable');
         /// Is $BuildPath a directory
     } elseif (!$BuildPath->isDir()) {
         throw new InvalidArgumentException(0, '%header% $BuildPath is not a directory');
         // Is $RootPath a readable?
     } elseif (!$RootPath->isReadable()) {
         throw new InvalidArgumentException(1, '%header% $RootPath is not readable');
         /// Is $RootPath a directory
     } elseif (!$RootPath->isDir()) {
         throw new InvalidArgumentException(1, '%header% $RootPath is not a directory');
         // Is $TempPath writable
     } elseif (!$TempPath->isWritable()) {
         throw new InvalidArgumentException(2, '%header% $TempPath is not writable');
         // Is $TempPath a directory
     } elseif (!$TempPath->isDir()) {
         throw new InvalidArgumentException(2, '%header% $TempPath is not a directory');
     } else {
         // Properties
         $this->_DataMapper = new ArrayObject();
         $this->_ID = 'Compiler';
         $this->_Temp = $TempPath;
         $this->_Build = $BuildPath;
         $this->_Root = $RootPath;
         $this->_Files = array();
         // Mediator
         if ($Mediator) {
             $this->setMediator($Mediator);
         }
     }
 }