많은 유틸리티 함수를 Util, FileUtil, WebUtil로 이동
This commit is contained in:
+4
-175
@@ -3,23 +3,9 @@ namespace sammo;
|
||||
|
||||
require(__dir__.'/../vendor/autoload.php');
|
||||
|
||||
function SetHeaderNoCache(){
|
||||
if(!headers_sent()) {
|
||||
header('Expires: Wed, 01 Jan 2014 00:00:00 GMT');
|
||||
header('Cache-Control: no-store, no-cache, must-revalidate');
|
||||
header('Cache-Control: post-check=0, pre-check=0', FALSE);
|
||||
header('Pragma: no-cache');
|
||||
}
|
||||
}
|
||||
|
||||
function CustomHeader() {
|
||||
//xxx: CustomHeader를 제거하기 전까진 유지
|
||||
SetHeaderNoCache();
|
||||
}
|
||||
|
||||
function getmicrotime() {
|
||||
$microtimestmp = explode(' ', microtime());
|
||||
return $microtimestmp[0] + $microtimestmp[1];
|
||||
WebUtil::setHeaderNoCache();
|
||||
}
|
||||
|
||||
function logErrorByCustomHandler(int $errno, string $errstr, string $errfile, int $errline, array $errcontext){
|
||||
@@ -31,171 +17,14 @@ function logErrorByCustomHandler(int $errno, string $errstr, string $errfile, in
|
||||
|
||||
$date = date("Ymd_His");
|
||||
|
||||
file_put_contents(__DIR__.'/../d_log/err_log.txt',"$date, $errno, $errstr, $errfile, $errline\n");
|
||||
file_put_contents(__DIR__.'/../d_log/err_log.txt',"$date, $errno, $errstr, $errfile, $errline\n", FILE_APPEND);
|
||||
|
||||
/* Don't execute PHP internal error handler */
|
||||
return true;
|
||||
//return true;
|
||||
}
|
||||
set_error_handler("\sammo\logErrorByCustomHandler");
|
||||
|
||||
function Error($msg) {
|
||||
AppendToFile(ROOT.'/d_log/err.txt', $msg."\n");
|
||||
file_put_contents(ROOT.'/d_log/err.txt', $msg."\n", FILE_APPEND);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
function ErrorToScreen($msg) {
|
||||
AppendToFile(ROOT.'/d_log/err.txt', $msg."\n");
|
||||
echo $msg;
|
||||
exit(1);
|
||||
}
|
||||
|
||||
function WriteToFile($filename, $content) {
|
||||
$fp = @fopen($filename, 'w');
|
||||
@fwrite($fp, $content);
|
||||
@fclose($fp);
|
||||
}
|
||||
|
||||
function AppendToFile($filename, $content) {
|
||||
$fp = @fopen($filename, 'a');
|
||||
@fwrite($fp, $content);
|
||||
@fclose($fp);
|
||||
}
|
||||
|
||||
function ReadToFile($filename) {
|
||||
$fp = @fopen($filename, 'r');
|
||||
$content = @fread($fp, filesize($filename));
|
||||
@fclose($fp);
|
||||
return $content;
|
||||
}
|
||||
|
||||
function ReadToFileForward($filename, $size) {
|
||||
$fp = @fopen($filename, 'r');
|
||||
$content = @fread($fp, $size);
|
||||
@fclose($fp);
|
||||
return $content;
|
||||
}
|
||||
|
||||
function ReadToFileBackward($filename, $size) {
|
||||
$fp = @fopen($filename, 'r');
|
||||
@fseek($fp, -$size, SEEK_END);
|
||||
$content = @fread($fp, $size);
|
||||
@fclose($fp);
|
||||
return $content;
|
||||
}
|
||||
|
||||
function delInDir($dir) {
|
||||
$handle = opendir($dir);
|
||||
while(false !== ($FolderOrFile = readdir($handle))) {
|
||||
if($FolderOrFile != "." && $FolderOrFile != "..") {
|
||||
if(is_dir("$dir/$FolderOrFile")) {
|
||||
delInDir("$dir/$FolderOrFile");
|
||||
} // recursive
|
||||
else {
|
||||
unlink("$dir/$FolderOrFile");
|
||||
}
|
||||
}
|
||||
}
|
||||
closedir($handle);
|
||||
return $success;
|
||||
}
|
||||
|
||||
function delExpiredInDir($dir, $t) {
|
||||
$handle = opendir($dir);
|
||||
while(false !== ($FolderOrFile = readdir($handle))) {
|
||||
if($FolderOrFile != "." && $FolderOrFile != "..") {
|
||||
if(is_dir("$dir/$FolderOrFile")) {
|
||||
delExpiredInDir("$dir/$FolderOrFile", $t);
|
||||
} // recursive
|
||||
else {
|
||||
$mt = filemtime("$dir/$FolderOrFile");
|
||||
if($mt < $t) {
|
||||
unlink("$dir/$FolderOrFile");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
closedir($handle);
|
||||
return $success;
|
||||
}
|
||||
|
||||
function hashPassword($salt, $password){
|
||||
return hash('sha512', $salt.$password.$salt);
|
||||
}
|
||||
|
||||
/**
|
||||
* 변환할 내용이 _tK_$key_ 형태로 작성된 단순한 템플릿 파일을 이용하여 결과물을 생성해주는 함수.
|
||||
*/
|
||||
function generateFileUsingSimpleTemplate(string $srcFilePath, string $destFilePath, array $params, bool $canOverwrite=false){
|
||||
if($destFilePath === $srcFilePath){
|
||||
return 'invalid destFilePath';
|
||||
}
|
||||
if(!file_exists($srcFilePath)){
|
||||
return 'srcFilePath is not exists';
|
||||
}
|
||||
if(file_exists($destFilePath) && !$canOverwrite){
|
||||
return 'destFilePath is already exists';
|
||||
}
|
||||
if(!is_writable(dirname($destFilePath))){
|
||||
return 'destFilePath is not writable';
|
||||
}
|
||||
|
||||
$text = file_get_contents($srcFilePath);
|
||||
foreach($params as $key => $value){
|
||||
$text = str_replace("_tK_{$key}_", $value, $text);
|
||||
}
|
||||
file_put_contents($destFilePath, $text);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* '비교적' 안전한 int 변환
|
||||
* null -> null
|
||||
* int -> int
|
||||
* float -> int
|
||||
* numeric(int, float) 포함 -> int
|
||||
* 기타 -> 예외처리
|
||||
*
|
||||
* @return int|null
|
||||
*/
|
||||
function toInt($val, $force=false){
|
||||
if($val === null){
|
||||
return null;
|
||||
}
|
||||
if(is_int($val)){
|
||||
return $val;
|
||||
}
|
||||
if(is_numeric($val)){
|
||||
return intval($val);//
|
||||
}
|
||||
if(strtolower($val) === 'null'){
|
||||
return null;
|
||||
}
|
||||
|
||||
if($force){
|
||||
return intval($val);
|
||||
}
|
||||
throw new InvalidArgumentException('올바르지 않은 타입형 :'.$val);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate a random string, using a cryptographically secure
|
||||
* pseudorandom number generator (random_int)
|
||||
*
|
||||
* For PHP 7, random_int is a PHP core function
|
||||
* For PHP 5.x, depends on https://github.com/paragonie/random_compat
|
||||
*
|
||||
* @param int $length How many characters do we want?
|
||||
* @param string $keyspace A string of all possible characters
|
||||
* to select from
|
||||
* @return string
|
||||
*/
|
||||
function random_str($length, $keyspace = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')
|
||||
{
|
||||
$str = '';
|
||||
$max = mb_strlen($keyspace, '8bit') - 1;
|
||||
for ($i = 0; $i < $length; ++$i) {
|
||||
$str .= $keyspace[random_int(0, $max)];
|
||||
}
|
||||
return $str;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user