PHP寫PHP檔案
阿新 • • 發佈:2018-11-10
PHP寫PHP檔案
1、效果
2、程式碼
/** * @todo 呼叫方法 */ public function testAction(){ $id = isset($_GET['id']) ? (int)$_GET['id'] : ''; if (empty($id)){ die('引數缺失'); } $this->createNewPage($id); exit(); } /** * @todo 根據ID往類中寫不同的方法 * @param unknown $id */ function createNewPage($id){ /** 新增控制器 */ $filePath = APP_PATH.'/app/controllers/Test.php'; if(!file_exists($filePath)){ $content = '<?php'.PHP_EOL. 'class AboutController extends BasicController {'.PHP_EOL. ' public function getPage($id){'.PHP_EOL. ' $mTest = new TestModel();'.PHP_EOL. ' $info = $mTest->getOne([["id",$id]]);'.PHP_EOL. ' $this->getView()->assign("info", $info);'.PHP_EOL. ' $this->display("index");'.PHP_EOL. ' exit();'.PHP_EOL. ' }'.PHP_EOL. '}'; file_put_contents($filePath, $content, FILE_APPEND | LOCK_EX ); } /** 新增類 */ $actionName = 'test'.$id.'Action'; $actionContent = ' public function '.$actionName.'(){'.PHP_EOL. ' $this->getPage('.(int)$id.');'.PHP_EOL. ' }'.PHP_EOL. '}'; /** 把類追加到之前的檔案中 */ $count = count(file($filePath)); $fp = fopen( $filePath, 'r+' ); if ($fp) { //修改最後一行的資料 $i = 1; while (!feof($fp)) { if ($i == $count) { //修改最後一行資料 fseek($fp, 0, SEEK_CUR); //替換某一行 fwrite($fp, $actionContent); //替換某一行的詳情 break; } fgets($fp); $i++; } fclose($fp); } }
3、由於Test.PHP檔案中的方法都是相似的,所以不需要每次建立的時候都給檔案追加一個方法;直接寫一個公共的方法就好啦。
修改如下:
public function noticeAction(){
$this->getPage($_GET['id']);
}