1
0
mirror of synced 2024-12-13 06:46:03 +03:00

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

This commit is contained in:
pookey 2006-09-03 21:32:56 +00:00
parent 1a265b0750
commit ae534f69ff
2 changed files with 27 additions and 13 deletions

View File

@ -386,7 +386,6 @@ final class Doctrine {
}
/**
* 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
*
@ -449,28 +448,35 @@ final class Doctrine {
$end = $refl -> getEndLine();
$ret = array_merge($ret,
array_slice($lines,
$start,
($end - $start)));
array_slice($lines,
$start,
($end - $start)));
}
$file = self::$path.DIRECTORY_SEPARATOR.'Doctrine.compiled.php';
if (!is_writable($file))
throw new Doctrine_Exception("Couldn't write compiled data. $file is not writable");
$fp = fopen($file, 'w+');
fwrite($fp, "<?php
".implode('', $ret)."
class InvalidKeyException extends Exception { }
class DQLException extends Exception { }
?>");
// first write the 'compiled' data to a text file, so
// that we can use php_strip_whitespace (which only works on files)
$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);
$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);
fclose($fp);
}
/**
* simple autoload function
* returns true if the class was loaded, otherwise false

View File

@ -0,0 +1,8 @@
<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>