Subversion Repositories php-qbpwcf

Rev

Rev 226 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

#!/usr/bin/php
<?php

/*
        QBPWCF, Quick Build PHP website Component base on Fedora Linux.
    Copyright (C) 2015~2024 Min-Jhin,Chen

    This file is part of QBPWCF.

    QBPWCF is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    QBPWCF is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with QBPWCF.  If not, see <http://www.gnu.org/licenses/>.
    
*/

#使用命名空間qbpwcf
namespace qbpwcf;

#取得 lib path
exec("php -f ".escapeshellarg(pathinfo(__FILE__)["dirname"]."/libexec/folderOfUsrLib.php"),$output,$status);

#如果執行失敗
if($status!==0){

        #debug
        var_dump(__LINE__,$output);

        #結束執行,回傳shell 1.
        exit(1);

        }#if end

#儲存lib path
$folderOfUsrLib=$output[0];

#以該檔案的實際位置的 lib path 為 include path 首位
$output=array();
exec("cd ".escapeshellarg(pathinfo(__FILE__)["dirname"]."/../".$folderOfUsrLib."/qbpwcf").";pwd;",$output,$status);

#如果執行失敗
if($status!==0){

        #debug
        var_dump(__LINE__,$output);

        #結束執行,回傳shell 1.
        exit(1);

        }#if end

#設置 include path 
set_include_path($output[0].PATH_SEPARATOR.get_include_path());

#匯入外部套件
include("allInOne.php");

#如果有參數
if(isset($_SERVER["argv"][1]))
{
        #解析成陣列
        $array=(array)json_decode(urldecode(base64_decode($_SERVER["argv"][1])));       
        
        #顯示目前的陣列結構
        var_dump($array);

}#if end

#初始化key
$key="";

#當 $key 等於 ""
while($key==="")
{
        #涵式說明:
        #讀取標準I/O的一行輸入.並提供提示說明.
        #回傳的結果:
        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
        #$result["error"],錯誤訊息.
        #$result["function"],當前執行的函數名稱.
        #$result["content"],取得的輸入內容.
        #必填的參數:
        #$conf["commentsArray"],字串陣列,提示輸入的文字描述,$conf["commentsArray"][$i]代表第($+1)行的描述.
        $conf["commentsArray"]=array("請輸入陣列的key");
        #可省略的參數:
        #$conf["newLineBreak"],字串,是否$conf["commentsArray"]的每個元素後面都要斷行,"false"代表不要,預設為"true"要斷行.
        #$conf["newLineBreak"]="false";
        $readLine=cmd::readLine($conf);
        unset($conf);
        
        #如果讀取失敗
        if($readLine["status"]==="false")
        {
                #初始化結果
                $result=array();
                
                #設置執行失敗
                $result["status"]="false";
                
                #設置執行錯誤
                $result["error"]=$readLine;
                
                #印出結果
                var_dump($result);
        
        }#if end

        #讀取到的內容
        $key=$readLine["content"];

}#while end

#當 $value 不存在
while(!isset($value))
{
        #涵式說明:
        #讀取標準I/O的一行輸入.並提供提示說明.
        #回傳的結果:
        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
        #$result["error"],錯誤訊息.
        #$result["function"],當前執行的函數名稱.
        #$result["content"],取得的輸入內容.
        #必填的參數:
        #$conf["commentsArray"],字串陣列,提示輸入的文字描述,$conf["commentsArray"][$i]代表第($+1)行的描述.
        $conf["commentsArray"]=array("請輸入陣列的value");
        #可省略的參數:
        #$conf["newLineBreak"],字串,是否$conf["commentsArray"]的每個元素後面都要斷行,"false"代表不要,預設為"true"要斷行.
        #$conf["newLineBreak"]="false";
        $readLine=cmd::readLine($conf);
        unset($conf);
        
        #如果讀取失敗
        if($readLine["status"]==="false")
        {
                #初始化結果
                $result=array();
                
                #設置執行失敗
                $result["status"]="false";
                
                #設置執行錯誤
                $result["error"]=$readLine;
                
                #印出結果
                var_dump($result);
        
        }#if end

        #讀取到的內容
        $value=$readLine["content"];

}#while end

#如果不存在 $array
if(!isset($array))
{
        #初始化陣列變數
        $array=array();

}#if end

#設置陣列變數數值
$array[$key]=$value;

#取得轉換成 json 格式且 urlencode 跟 base64_encode 後的資料
$output=base64_encode(urlencode(json_encode($array)));

#印出結果
echo $output.PHP_EOL;

#遞迴執行
system($_SERVER["argv"][0]." ".$output);

?>