PHP
http://php.net/manual/ja/index.php
・PHP5.2: JSONサポート
・PHP5.3: 匿名関数、名前空間、HeredocとNowdoc、const、?:、Phar
・PHP5.4: Short Open Tag、Traits
・PHP5.5: yield、list() in foreach
・PHP5.6: 可変個引数用演算子 ... 、累乗演算子 **
・PHP7.0: useのグループ化、Null合体演算子 ??、宇宙船演算子 <=>
PHP API構成
・Array
・Calendar
・Date
・Directory
・Error
・Filesystem
・Filter
・FTP
・HTTP
・Libxml
・Math
・Misc
・MySQL
・SimpleXML
・String
・XML
・Zip
★定数
if (!defined("ZERO")) define("ZERO", 0);
if (!defined("PI")) define("PI", 3.1415926);
echo ZERO;
echo PI;
define('MAX_VALUE', '1.0'); // クラス外に定義
const MAX_VALUE = 1.0; // クラス内に定義
マジック定数
__LINE__ ファイル上の現在の行番号
__FILE__ ファイルのフルパスとファイル名
__DIR__
__FUNCTION__ 宣言された関数名
__CLASS__ 宣言されたクラス名
__TRAIT__
__METHOD__ 宣言されたメソッド名
__NAMESPACE__
★ファイルのインクルード
require_once('../../lib/Database.php'); ×
↓
define('ROOT' , pathinfo(__FILE__, PATHINFO_DIRNAME)); // カレントフォルダー
//require_once(ROOT . '../../lib/Database.php');
load_class('Database');
function load_class($class_name){
$path = ROOT . "../../lib/{$class_name}.php";
if(file_exists($path)){
require_once($path);
}
}
※相対パスではなく、絶対パスで指定すること(_DIR_或いはdirname(_FILE_))
★メソッド作成
function add_to_cart($item_id , $qty){
if(!is_array($item_id)){
$_SESSION['cart']['item_id'] = $qty;
}else{
foreach($item_id as $i_id => $qty){
$_SESSION['cart']['i_id'] = $qty;
}
}
}
add_to_cart( 'APPLE' , 2 );
add_to_cart( array('APPLE' => 2 , 'BANANA' => 3) );
★数値
is_int() 整数型であるか
is_float() 小数であるか
is_double() is_floatの別名
is_numeric() 数字として扱えるか、文字列でも良い
round() 小数部分を四捨五入
floor() 小数点以下切り捨て
ceil() 小数点以下切り上げ
※小数点以下何桁から丸めるかを変更できる
★文字列
単一引用符
$a = 'ABC'; // エスケープと変数展開がNG
$a = 'AB\'C'; // \が必要
$a = 'ABC\\';
二重引用符
$a = "Hello \nWorld"; // エスケープがOK
$a = "Hello $var"; // 変数展開がOK
ヒアドキュメント構文
$a = <<<EOF
Hello \nWorld
EOF;
1.エスケープと変数展開がOK
2.<<<EOF・EOF;の後にはコメントがNG
3.EOF;は必ず第1行がら初め
オフセット位置
$first = $str{0};
$first = $str[0]; // × 旧式
$last = $str{ strlen($str) - 1 };
$last = $str[ strlen($str) - 1 ]; // × 旧式
1文字を削除
ltrim($target, ',')
rtrim($target, ',')
trim($target, ',')
文字列 ⇒ 配列
配列 = explode("区切り文字", "文字列");
$array = explode(",", "AAA,BBB,CCC");
配列 ⇒ 文字列
文字列 = implode("区切り文字", "配列");
$array = array("AAA", "BBB", "CCC");
$string = implode(",", $array);
概要を作成
$article = "BREAKING NEWS: Apple Wins Ruling in Case Brought by Samsung.";
$summary = substr_replace($article, "...", 30);
// BREAKING NEWS: Apple Wins Ruli...
単語を数える
$wordCount = str_word_count($article);
文字列を分割
$text = wordwrap($article, 20, "<br />\n");
ucfirst 最初の文字を大文字にする
lcfirst 最初の文字を小文字にする
ucwords 各単語の最初の文字を大文字にする
strtoupper すべて大文字にする
strtolower すべて小文字にする
number_format 数字を千位ごとにフォーマット(123,456,789)
文字列を丸める
mb_strimwidth("Hello World", 0, 10, "..."); // Hello W...
str_replace(),strtr() 文字列の置換、strtrは複数の文字列を同時に置換できる
substr(),mb_substr() 文字列の何文字目から何文字取り出す
strlen(), mb_strlen() 文字列のバイト数を返す
strpos(), mb_strpos() 指定された文字列が何文字目に存在するか
stripos()、mb_stripos() 大文字小文字を区別しない場合
mb_convert_encoding() 文字列を指定された文字コードに変換
mb_convert_kana() ひらがな・カタカナ、全角・半角を相互に変換
mt_rand() 指定された範囲でランダムな数値を返す、randより精度が高い
is_string() 文字列であるか
int strcmp( string str1, string str2 )
int strncmp( string str1, string str2, int len )
str1 < str2 : < 0
str1 > str2 : > 0
str1 = str2 : = 0
strcasecmp() 大・小文字を区別せず
★文字列の分割
$str = 'aaa<br/>bbb<br>ccc';
$result = explode('<br/>', $str);
$result = preg_split('/<br\/?>/', $str);
// 区切り文字も結果に含む
$result = preg_split('/(<br\/?>)/', $str, null, PREG_SPLIT_DELIM_CAPTURE);
// 5文字ずつ
$result = str_split($str, 5);
$str = 'aaa,"b,b,b","c""c""c"';
$result = str_getcsv($str, ',', '"');
// ['aaa', 'b,b,b', 'c"c"c']
$str = '2016-08-29 22:00,ABC:あいう';
$result = sscanf($str, '%10s %5s,%s:%s');
preg_match('/^(.+?) (.+?),(\w+):(.*)$/', $str, $result);
// ['2016-08-29', '22:00', 'ABC', 'あいう']
preg_match('/^(?<ymd>.+?) (?<hm>.+?),(?<type>\w+):(?<msg>.*)$/', $str, $result);
// ['ymd'=>'2016-08-29', 'hm'=>'22:00', 'type'=>'ABC', 'msg'=>'あいう']
preg_match(), preg_match_all() 正規表現による一致・検索
preg_replace() 正規表現による置換
preg_quote() 正規表現の特殊文字の前にバックスラッシュをつけてエスケープ
★変数展開
安全な使い方
スカラ型
echo "This is {$var}.";
添字配列
echo "This is {$var[1]}.";
連想配列
echo "This is {$var['key1']}.";
オブジェクト
echo "This is {$var->name}.";
★配列
$empty = array(); //empty($empty):TURE、is_null($empty):FALSE
添字配列
$a = array(1, 2, 3); //インデックスは0から
$a = array(5=>1, 2, 3); //インデックスは5から
$a = array(-3=>1, -2=>2, -1=>3); //インデックスは負
$a = array(-3=>1, 2, 3); //インデックスは-3, 0, 1
$a[] = 4; // 要素の追加
unset($a[0]); // 要素の削除($a[0]アドレスが残ったまま)
unset($a); // 配列の削除
array_push($a, 4, 5); // 末尾追加(複数可)
array_pop($a); // 末尾削除
array_unshift($a, -1, 0); // 先頭追加(複数可)
array_shift($a); // 先頭削除
$arr = array(2=>3, 1=>2, 0=>1); // 降順
for ( $i=0, $cnt = count($arr); $i < $cnt; $i++ ) {
echo $arr[$i]; // 123 インデックス順
}
foreach ( $arr as $v ) {
echo $v; // 321 順序付け
}
連想配列
$arr = array('A'=>1, 'B'=>2, 'C'=>3);
foreach ( $arr as $key => $value ) {
$arr[$key] = ++$value;
}
foreach ($arr as $key => &$value) { //リファレンスを使って要素の値を変更
$value *= $value;
}
※キーのリファレンスはNG
混合型配列
$a = array(0=>1, 2, 3, 'A'=>1, 'B'=>2, 'C'=>3);
多次元配列
$arr = array();
$arr[0]["name"] = "aaa";
$arr[0]["color"] = "bbb";
$arr[1]["name"] = "ccc";
$arr[1]["color"] = "ddd";
ディレクトリ
$handle = opendir('.');
while ($file = readdir($handle)){
$files[] = $file;
}
closedir($handle);
sort($files);
$arr = array('A','B','C');
list($a, $b, $c) = $arr; // $a='A'; $b='B'; $c='C';
list($a, , $c) = $arr; // $a='A'; $c='C';
list( $year, $month, $day ) = get_ymd( time() );
function get_ymd($timestamp){
return explode('-', date("Y-m-d", $timestamp ));
}
array range( int low, int high [,int step])
$arr = range(1, 5); // array(1, 2, 3, 4, 5);
$arr = range('A','C'); // array('A', 'B', 'C');
$arr = range(1, 9, 3) // array(1, 4, 7);
$arr = range(1, 9);
rsort($arr); = $arr = range(9, 1);
int count( mixed var [, int mode] )
count(配列以外) = 1
count(null) = 0
modeがCOUNT_RECURSIVE (=1)の場合、再帰的に配列をカウント(多次元配列)
$a = array_merge($a1, $a2)、array_merge_recursive:多次元配列 // 連結
$a = array_slice($a, 1, 2); // 切り出し 引数:開始添字、要素数
$a = array_reverse($a); // 反転
$a = array_reverse($a, True); // 反転(連想配列)
bool is_array ( mixed var )
array array_keys ( array input [, mixed search_value [, bool strict]] )
bool array_key_exists ( mixed key, array search )
array array_values ( array input )
array array_unique ( array array ) 重複を除く
添字配列のソート
bool sort( array &array [, int sort_flags] ) A…Z…a…zの昇順、大・小文字を区別
bool rsort ( array &array [, int sort_flags] ) 降順
$arr = array('21','3',);
sort($arr, SORT_NUMERIC); // 3, 21 数字により
sort($arr, SORT_STRING); // 21, 3 文字列により
連想配列のソート
asort($arr); // 値の昇順
arsort($arr); // 値の降順
ksort($arr); // キーの昇順
krsort($arr); // キーの降順
usort(),uasort(),uksort() 定義した関数に基づいて配列をソート
array_multisort() 複数の配列を他の配列の値をもとにソート
配列に対し、便利な操作
function cube($n){
return($n * $n * $n);
}
$a = array(1, 2, 3);
$b = array_map('cube', $a); // 変更後の配列を作る
function output($item, $key){
echo "$key. $item<br />\n";
}
function alter(&$item, $key, $prefix){
$item = "$prefix: $item";
}
$fruits = array("a" => "lemon", "b" => "orange");
array_walk($fruits, 'output'); // 自身を書き換える
array_walk($fruits, 'alter', 'fruit');
array_walk_recursive:多次元配列
in_array() 値が含まれているか
shuffle() 配列をランダムにシャッフル
array_search() 値を検索し、見つかった場合そのキーを返す
reset() 配列のポインタを先頭の要素のセットし、その値を返す
end() 配列のポインタを最後の要素のセットし、その値を返す
※配列の最初や最後の要素を取得する目的で
next() 配列のポインタを進め、その値を返す
prev() 配列のポインタを戻し、その値を返す
current() 現在の配列のポインタが指す値を返す
extract() 連想配列のキー部分を変数名とする変数を作る
list() 配列を引数として与えられた複数の変数に分けて代入する
$ary = [1, 2, 3, 4, 5];
$result = array_chunk($ary, 2);
// [[1,2], [3,4], [5]]
★+ と array_merge
$a1 = [ 'a' => 1, 'b' => 2, 3];
$a2 = [ 'b' => 4, 'c' => 5, 6];
$a1 + $a2
// ['a' => 1, 'b' => 2, 0 => 3, 'c' => 5]
// keyとindex 共に先勝ち
array_merge($a1, $a2)
// ['a' => 1, 'b' => 4, 0 => 3, 'c' => 5, 1 => 6]
// keyなら後勝ち、indexなら連番
$b1 = [1, 2, 3];
$b2 = [4, 5, 6];
$b1 + $b2
// [0 => 1, 1 => 2, 2 => 3]
array_merge($b1, $b2)
// [0 => 1, 1 => 2, 2 => 3, 3 => 4, 4 => 5, 5 => 6]
★HTMLタグ関連
URLを自動リンクに
$text = "Welcome to here(http://sites.google.com/site/webdevelopart/)";
$pattern = "/http:\/\/([A-z0-9.\/-]+)/";
//$pattern = "/(https?:\/\/[a-zA-Z0-9.\/~_]+)/";
$linkText = preg_replace($pattern, "<a href='$0'>$0</a>", $text);
HTMLタグを除く
$text = strip_tags($input);
$text = strip_tags($input, '<a>'); // <a>を無視
特殊文字をHTMLエンティティに変換
htmlspecialchars()
※ENT_QUOTESフラグを用いてシングルクォートも変換対象にする
function h($str, $encode='UTF-8') {
return htmlspecialchars($str, ENT_QUOTES, $encode);
}
改行⇒HTMLタグ
$comment = nl2br("aaa \n bbb"); // aaa <br /> bbb
is_uploaded_file() 不正操作を防ぐ、POSTによりアップロードされたファイルであるか
move_uploaded_file() POSTによりアップロードされたファイルである場合、指定されたファイル名に移動
header() 生のHTTPヘッダーを出力
※「Location: http://www.example.com」でリダイレクト
http_build_query() 連想配列からURLエンコードされたクエリ文字列を生成
rawurlencode() 非アルファベット文字を%と16進数を用いてURLとして利用できる文字列に変換
rawurldecode() 元の文字列を復元
filter_input() GET、POST などのパラメータをフィルタリングしたうえで受け取る
filter_var() 指定したフィルターでデータをフィルタリング
※メールアドレスとして正しい書式であるか、特殊文字を取り除いたり
session_start() セッションを開始、セッションIDを渡して現在のセッションを復帰
session_regenerate_id() セッションの情報を位置したままセッションIDを新しく生成した値に置き換える
※セッションハイジャック攻撃を防ぐ手段
session_destroy() セッション情報を全て破棄
setcookie() クッキーに値を保存する、有効期限も設定
hash() 選択したアルゴリズムに基づいてハッシュ値を生成
md5() MD5アルゴリズムを用いてハッシュ値を生成
password_hash() 選択したアルゴリズムを用いてパスワード用のハッシュ値を生成
password_verify() 作られたパスワードと生のパスワード文字列がマッチするかを検証
base64_encode(), base64_decode() MIME base64 方式でエンコード、デコード
json_encode(), json_decode() 連想配列 ←→ JSON
※第二引数にtrueを指定すると stdClass Object の代わりに連想配列に変換
mb_send_mail() mb_languageにより設定された言語に基づいてエンコード変換を行ってメールを送信
★Submitチェック
if( $_SERVER['REQUEST_METHOD'] == 'POST' and isset($_POST['submit']) ){
// do something
}
★セッションのsetterとgetter
define('APP_ID', 'xxx');
function session_get($key){
$k = APP_ID . '.' . $key;
if(isset($_SESSION[$k])){
return $_SESSION[$k];
}
return false;
}
function session_set($key, $value){
$k = APP_ID . '.' . $key;
$_SESSION[$k] = $value;
return true;
}
★echo、print、print_r、printf、sprintf、var_dump比較
echo
printよりやや速い
メソッドではなく、キーワードである
echo "a"," b"," c."; //a b c. 「,」で連結 やや速い
echo "a"." b"." c."; //a b c. 「.」で連結
$name = "Andy";
echo "My name is $name\n"; //My name is Andy
echo 'My name is $name\n'; //My name is $name\n
「"」間は、$変数 や \n が埋め込み展開される
単純に文字列を出力する場合に「'」を使う
print "My name is $a. I am $b";
echo "My name is $a. I am $b";
echo "My name is " . $a . ". I am " . $b;
echo "My name is " , $a , ". I am " , $b;
echo 'My name is ' , $a , '. I am ' , $b; 一番速い
echo "a
b
c."; //a b c. 改行でも一行で出力
メソッドではなく、キーワードである
//print "a"," b"," c."; ×
print "a
b
c."; //a b c. 改行でも一行で出力
$name = "Andy";
print "My name is $name"; //My name is Andy
print 'My name is $name'; //My name is $name echoと同じ
//$a = echo("aaa"); ×
$b = print("aaa"); 或いは $b = print "aaa";
echo $b; //戻り値は固定で1である
print_r
$a="aaa";
$b = print_r($a);
echo $b; //戻り値は固定で1である
$a = array("name"=>"Andy","age"=>20,"birth"=>"2002-01-01");
print_r($a); //Array ( [name] => Andy [age] => 20 [birth] => 2002-01-01 )
print($a); //Array
※第二引数に true を指定して結果を文字列として返す
printf
printf("My name is %s %s.","Andy", "Liu"); //My name is Andy Liu.
printf("My name is %1\$s %1\$s.","Andy", "Liu"); //My name is Andy Andy.
printf("My name is %2\$s %1\$s.","Andy", "Liu"); //My name is Liu Andy.
%1,%2は表示順番
%% . %
%b . 2进制
%c . ASCII
%d . 10进制(符合あり)
%e . 1.5e+3
%u . 10进制(符合なし)
%f . float(local settings aware)
%F . float(not local settings aware)
%o . 8进制
%s . 文字列
%x . 16进制(小文字)
%X . 16进制(大文字)
sprintf
printfと違うのは出力しないこと
sprintf("My name is %s %s","Andy", "Liu"); //出力なし
$out = sprintf("My name is %s %s","Andy", "Liu");
echo $out; //My name is Andy Liu.
$out = sprintf("%06.2f", 15.256);
echo $out; // 015.26
※6:数値全体の桁数、2:四捨五入の桁数、0:0で埋め込み
$filename = sprintf("data_%s.csv", date("Ymd-hi"));
date( "Y年m月d日 H時i分s秒" );
sprintf( "%04d年%02d月%02d日", 2012, 3, 1); // 2012年03月01日
var_dump
詳細情報(型、値など)を出力するため、デバッグ用
★関数
可変長引数
$sum = sum(1, 2, 3, 4, 5);
function sum(){
$args = func_num_args();
for( $sum=$i=0; $i < $args; $i++ ){
$sum += func_get_arg($i);
}
return $sum;
}
function test($arg1, $arg2){ ... }
可変関数
$func = 'test';
$func("aaa", "bbb");
関数コール
call_user_func( "test", "aaa", "bbb");
call_user_func_array( "test", array("aaa", "bbb") );
匿名関数
PHP5.2以前
$func = create_function('$arg1, $arg2', '...');
PHP5.3以降
$func = function($arg1, $arg2){...};
usort($arr, $func);
$func("aaa", "bbb");
call_user_func( $func, "aaa", "bbb");
★変数のスコープ
globalキーワード
グローバル変数をローカル変数として定義すること
$a = 'global';
func1();
func2();
function func1(){
echo $a; // 警告:定義されない
$a = 'local';
echo $GLOBALS['a']; // global
global $a;
echo $a; // global
}
function func2(){
global $a;
$a = 'local';
echo $GLOBALS['a']; // local
}
staticキーワード
関数内のローカル変数でのみ使用できる
リファレンスを保存するのができない
echo counter(); // 1
echo counter(); // 2
echo counter(); // 3
function counter() {
static $a = 0;
//static $a = 1 + 2; // NG
//static $a = sqrt(2); // NG
return ++$a;
}
★ファイルを安全に操作
〇読み込み
書き方1
if( file_exists($filename) && is_readable($filename) ) {
$fh = fopen($filename, "r");
...
fclose($fh);
}
書き方2
if( $fh = fopen($filename, "r") ) {
...
fclose($fh);
}
〇書き込み
$dir = '/var/www/project/';
$file_path = $dir . "test.txt";
if(is_writable($dir)){
file_put_contents($file_path , $contents);
//ファイル権限
chmod($file_path, 0644); // rw-r--r--
chmod($file_path, 0755); // rwxr-xr-x
}else{
die("Directory $dir is not writable, or does not exist.");
}
★CSVファイルの読み込み
$fh = fopen("test.csv", "r");
while( $line = fgetcsv($fh, 1000, ",") ){
echo "Content: {$line[1]}";
}
★iniファイルの読み込み
config.ini
; Comment
[section1]
name = Andy
address = Tokyo
[section2]
color = Green
$array = parse_ini_file("config.ini");
print_r $array;
出力:
Array
(
[name] => Andy
[address] => Tokyo
[color] => Green
)
$array = parse_ini_file("config.ini", true);
print_r $array;
出力:
Array
(
[section1] => Array
(
[name] => Andy
[address] => Tokyo
)
[section2] => Array
(
[color] => Green
)
)
★外部プログラムの実行
exec 外部プログラムを実行
passthru 外部プログラムを実行し、未整形の出力を表示
system 外部プログラムを実行し、出力を表示
function execCmd($command){
if(function_exists('system')){
ob_start();
system($command, $return_var);
$output = ob_get_contents();
ob_end_clean();
}else if(function_exists('passthru')){
ob_start();
passthru($command, $return_var);
$output = ob_get_contents();
ob_end_clean();
}else if(function_exists('exec')){
exec($command, $output, $return_var);
$output = implode("\n", $output);
}else if(function_exists('shell_exec')){
$output = shell_exec($command) ;
}else{
$output = 'No any command on this system';
$return_var = 1;
}
return array('output' => $output, 'status' => $return_var);
}
★SQL文の作成
function insert_record($table_name, $data){
foreach($data as $key => $value){
//mysqli_real_escape_string
$data[$key] = $db->mres($value);
}
$fields = implode(',', array_keys($data));
$values = "'" . implode("','", array_values($data)) . "'";
$query = "INSERT INTO {$table}($fields) VALUES($values)";
return $db->query($query);
}
$data = array('name' => $name, 'email' => $email, 'address' => $address);
insert_record('users', $data);
★バージョン比較
書き方1
if (version_compare("5.2.0", PHP_VERSION, ">=")) {
...
}
if (version_compare(PHP_VERSION, '5.0.0', '<')) {
...
}
書き方2
if (version_compare(PHP_VERSION, '5.3.0') >= 0) {
...
}
★URL解析
/index.php?name=andy&gender=male#top
$_SERVER["QUERY_STRING"] name=andy&gender=male
$_SERVER["REQUEST_URI"] /index.php?name=andy&gender=male
$test = pathinfo("http://localhost/index.php");
print_r($test);
[dirname] => http://localhost
[basename] => index.php
[extension] => php
[filename] => index
$test = parse_url("http://localhost/index.php?name=andy&gender=male#top");
print_r($test);
[scheme] => http
[host] => localhost
[path] => /index.php
[query] => name=andy&gender=male
[fragment] => top
$test = basename("http://localhost/index.php?name=andy&gender=male#top");
echo $test;
index.php?name=andy&gender=male#top
★SPL(Standard PHP Library)
// メモリから消えると、fcloseする
$file = new SplFileObject($path);
$file->setFlags(SplFileObject::READ_CSV);
foreach ($file as $line) {
echo $line[0];
}
// サイズが大きくて、array_mergeでは心配な時
$ite = new AppendIterator();
$ite->append(new ArrayIterator([1,2,3]));
$ite->append(new ArrayIterator([4,5,6]));
foreach ($ite as $a) {
echo $a;
}
$ite = new ArrayIterator([1,2,3,4,5,6,7]);
$ite = new LimitIterator($ite, 2, 4); // 3456
$ite = new CallbackFilterIterator($ite,
function($current, $key, $iterator) {
return $current % 2 == 0; // 246
}
);
★clone
$o = new StdClass;
$o->n = 1;
$_o = clone $o;
$_o->n = 2;
echo $o->n; // 1 (cloneしなかったら、2になる)
echo $_o->n; // 2
★ファイル操作
file_get_contents() ファイルの内容或いはURLでウェブサイトのソースをすべて取得
file_put_contents() 文字列をファイルとして保存する、モードを指定して追記したり排他ロックしたり
basename() ファイルやディレクトリのパスから最後にある名前の部分を返す
dirname() ファイルパスからディレクトリパスを取り出す
dirname(__FILE__) 実行中のPHPファイルのあるディレクトリを得る、__DIR__と同義
realpath() 絶対パスを返す
file_exists() ファイルが存在するか
fopen() ファイルやURLをオープンしてストリームに結びつける
flock() オープンされたファイルのロック・開放を行う
fgets() 一行取得
fgetcsv() 一行取得し、指定された文字をもとに区切られた配列を返す
fwrite() オープンされたファイルストリームに書き込む
fclose() オープンされたファイルポインタをクローズ
rewind() ファイルポインタの位置を先頭に戻す
ftruncate() ファイルの内容を指定した長さに丸める
※サイズに0を指定するとファイルを空にできる
feof() ファイルポインタが終端に達しているか
mkdir() ディレクトリを作る、パーミッションを設定したり入れ子構造のディレクトリを作ったり
unlink() ファイルを削除
rmdir() ディレクトリを削除
rename() ファイル名を変える(移動)
copy() ファイルをコピー
chmod() ファイルのパーミッションを変更
chown() ファイルのオーナーを変更
is_file() 指定されたパスがファイルを指しているか
is_dir() 指定されたパスがディレクトリを指しているか