From 4c1215ca04bc682a5165363724a69f9a557304de Mon Sep 17 00:00:00 2001 From: Ludovic Pouzenc Date: Fri, 3 Aug 2012 11:40:43 +0000 Subject: Etape 2 sur 6743542 : parsing et tentative de mise en cache des AST des ficheir de tout le framework. Avec dumpAST : 4m37 d'exec. Avec serializeAST : 3m30 mais tous les fichiers sont vides car json_encode n'encode pas les objets !!! git-svn-id: file:///var/svn/2012-php-weave/trunk@11 d972a294-176a-4cf9-8ea1-fcd5b0c30f5c --- .../src/php-weave/cakephp_weaver.class.php | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'poc/poc02-compiling-cake/src/php-weave/cakephp_weaver.class.php') diff --git a/poc/poc02-compiling-cake/src/php-weave/cakephp_weaver.class.php b/poc/poc02-compiling-cake/src/php-weave/cakephp_weaver.class.php index 508e509..5e4f7de 100644 --- a/poc/poc02-compiling-cake/src/php-weave/cakephp_weaver.class.php +++ b/poc/poc02-compiling-cake/src/php-weave/cakephp_weaver.class.php @@ -14,20 +14,30 @@ class CakePHPWeaver extends AbstractWeaver { $fw_props=$this->staticEvalDefine($entrypoint_ast, $magics); if (!is_array($fw_props)) throw new Exception("No properties found in '$entrypoint_path'"); - print_r($fw_props); +// print_r($fw_props); $required=array('ROOT','APP_DIR','CAKE_CORE_INCLUDE_PATH','WEBROOT_DIR', 'WWW_ROOT'); $missing=array_diff($required, array_keys($fw_props)); - print_r($missing); +// print_r($missing); assert('count($missing)===0;'); return array_merge(array('entrypoint_path' => $entrypoint_path), $fw_props); } public function parseFrameworkConfig($fw_props) { - + return array(); } public function parseFrameworkCode($fw_props, $fw_conf, $cache_path) { - + $filelist=$this->findAllFiles($fw_props['CAKE_CORE_INCLUDE_PATH'], '/(\.php|\.ctp)$/', '/^\.svn$/'); + //print_r($filelist); + + $env=$fw_props; //TODO : More things here ? + foreach ($filelist as $f) { + //TODO : cache match + $cache_filepath=$cache_path . "/" . sha1($f) . "-" . substr(sha1(print_r($env,true)),-8,8) . ".ast"; + + $ast=$this->parseAndWalk($f, null, $env); + $this->serializeAST($ast, $f, $cache_filepath); + } } public function parseApplicationCode($fw_props, $fw_conf, $fw_extra, $cache_path) { -- cgit v1.2.3