Commit ae534f69 authored by pookey's avatar pookey

minor changes to Doctrine::compile(), adding extra error handling and improving docs

parent 1a265b07
...@@ -386,7 +386,6 @@ final class Doctrine { ...@@ -386,7 +386,6 @@ final class Doctrine {
} }
/** /**
* method for making a single file of most used doctrine runtime components * method for making a single file of most used doctrine runtime components
*
* including the compiled file instead of multiple files (in worst * including the compiled file instead of multiple files (in worst
* cases dozens of files) can improve performance by an order of magnitude * cases dozens of files) can improve performance by an order of magnitude
* *
...@@ -449,28 +448,35 @@ final class Doctrine { ...@@ -449,28 +448,35 @@ final class Doctrine {
$end = $refl -> getEndLine(); $end = $refl -> getEndLine();
$ret = array_merge($ret, $ret = array_merge($ret,
array_slice($lines, array_slice($lines,
$start, $start,
($end - $start))); ($end - $start)));
} }
$file = self::$path.DIRECTORY_SEPARATOR.'Doctrine.compiled.php'; $file = self::$path.DIRECTORY_SEPARATOR.'Doctrine.compiled.php';
if (!is_writable($file))
$fp = fopen($file, 'w+'); throw new Doctrine_Exception("Couldn't write compiled data. $file is not writable");
fwrite($fp, "<?php
".implode('', $ret)." // first write the 'compiled' data to a text file, so
class InvalidKeyException extends Exception { } // that we can use php_strip_whitespace (which only works on files)
class DQLException extends Exception { } $fp = fopen($file, 'w');
?>"); if ($fp === false)
throw new Doctrine_Exception("Couldn't write compiled data. Failed to open $file");
fwrite($fp, "<?php ".implode('', $ret).
"\nclass InvalidKeyException extends Exception { }".
"\nclass DQLException extends Exception { }"
);
fclose($fp); fclose($fp);
$stripped = php_strip_whitespace( $file );
$fp = fopen($file, 'w+'); $stripped = php_strip_whitespace( $file );
$fp = fopen($file, 'w');
if ($fp === false)
throw new Doctrine_Exception("Couldn't write compiled data. Failed to open $file");
fwrite($fp, $stripped); fwrite($fp, $stripped);
fclose($fp); fclose($fp);
} }
/** /**
* simple autoload function * simple autoload function
* returns true if the class was loaded, otherwise false * returns true if the class was loaded, otherwise false
......
<p>
Compiling is a method for making a single file of most used doctrine runtime components
including the compiled file instead of multiple files (in worst cases dozens of files)
can improve performance by an order of magnitude.
</p>
<p>
In cases where this might fail, a Doctrine_Exception is throw detailing the error.
</p>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment