■
PHP(二日目)
function sayHi($name) {
$lang = "php"; - 変数にphpを代入
echo "hi! $name from $lang";
}
sayHi("Tom");
var_dump($lang);
$x = 5.6;
//echo ceil($x); //6 - 小数点以下切り上げ
//echo floor($x); //5 - 小数点以下切り捨て
//echo round($x); //6 - 四捨五入
//echo rand(1,10); - 1-10の値をランダムに表示
$s1 = "hello";
$s2 = "ねこ";
//echo strlen($s1); //5 - 桁数
//echo mb_strlen($s2); //2 - マルチバイト型の文字数
//printf("%s - %s - %.3f", $s1 , $s2 , $x); - データ型を指定して表示する
$colors = ["red" , "blue" , "pink"];
echo count($colors); - 配列の数を取得する
echo implode("@",$colors); - 指定した文字で配列の情報を区切って表示する
★クラス・インスタンス
・User
・アクセス権
・private :そのクラス内からのみアクセス可能
・protected :そのクラス+親子クラスからアクセス可能
・public :すべてのクラスからアクセス可能
class User { - Userクラスの設定
//property
//public $name;
//protected $name;
private $name;
//constructor
public function __construct($name) {
$this->name = $name;
}
//method
/final/ public function sayHi() { - fainalを使用すると最終クラスになる
echo "hi! i am $this->name!";
}
}
class AdminUser extends User { - Userをエクステンドした子クラス(親クラスの関数を使用できる)
public function sayHello() {
echo "hello from Admin!";
}
//override - オーバーライドで、親クラスの関数を上書きできる
public function sayHi() {
echo " [admin]hi! i am $this->name!";
}
}
$tom = new User("Tom"); - newでUserクラスのインスタンスを登録
$bob = new User("Bob");
echo $tom->name; - Userクラスのmethodが使用可能
$bob->sayHi();
抽象クラス
abstract class BaseUser { - abstract class クラス名で抽象クラスを作成する
public $name;
abstract public function sayHi();
}
class User extends BaseUser {
public function sayHi() { - 子クラスは必ず抽象クラスのMethodを使わなければならない
echo "hello from User!";
}
}
interface - 子クラスにて使用されるインターフェースを定義する
・例
interface sayHi{
public function sayHi(); - interfaceのアクセス権はpublicにする
}
interface sayHello{
public function sayHello();
}
class User impriments sayHi,sayhello { - extendsではなくimplementsを使用する(親クラスを複数設定できる)
public function sayHi(){
echo "hi!";
}
public function sayHello() {
echo "Hello!";
}
}
外部ファイルからのデータ利用
[外部ファイル]
<?php
class User { - ユーザー定義のファイル
public $name;
public function __construct($name) {
$this->name = $name;
}
public function sayHi() {
echo "hi , i am $this->name!";
}
}
[メインファイル]
<?php
//require: fatal error - fatal errorを吐き出し処理を終了する
//require_once
//require "User.class.php";
//include: worning - worningを吐き出し処理を続行する
//include_once
//autoload - クラス名が決まっていない場合使用する
spl_autoload_register(function($class) {
require $class . ".class.php"; - 指定したuserクラス+.class.phpでファイルを指定する
});
$bob = new User("Bob");
$bob->sayHi();
namespace Dotinstall\Lib; - 名前空間の指定(階層構造で記載する)
class User { - ユーザー定義のファイル
public $name;
public function __construct($name) {
$this->name = $name;
}
public function sayHi() {
echo "hi , i am $this->name!";
}
}
[メインファイル]
<?php
//名前空間
require "User.class.php";
//use Dotinstall\Lib as Lib; - use 名前空間 as 定義する文字列
use Dotinstall\Lib; - 定義する文字列を書かない場合は最終階層の文字列になる
$bob = new Lib\User("Bob"); - クラス名の前に名前空間の階層構造を記載する
$bob->sayHi();
例外処理
//function div($a,$b) {
// echo $a / $b ;
//}
function div($a,$b){
try{
if($b === 0) { - $b = 0の場合
throw new Exception("cannnot divide by 0!"); - 文字列を投げる
}
echo $a / $b;
} catch (Exception $e) { - Exeptionが投げられたら
echo $e->getMessage(); - getMessageで取得した文字列を表示する
}
}
div(7,2);
div(5,0);
フォームからのデータ処理
<?php
$username = ''; - の初期設定
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$username = $_POST['username']; - ユーザ名を取得する
$err = false;
if (strlen($username) > 8) { - ユーザ名が8文字以上の場合
$err = true;
}
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>Check username</title>
</head>
<body>
<form action="" method="POST">
<input type="text" name="username" placeholder="user name" value="<?php echo
htmlspecialchars($username, ENT_QUOTES, 'UTF-8'); ?> "> - ユーザ名の取得
<input type="submit" value="Check!">
<?php if ($err) {echo "Too long!"; } ?> - ユーザ名が8文字以上の場合表示する
</form>
</body>
</html>
クッキー - データをブラウザ内に保存する
・ブラウザに保存するので、ほかのプログラムからも取得可能
setcookie("username" , "suzuki"); - usernameにsuzukiという値をセットする
setcookie("username" , "suzuki" , time()+60*60); - 有効期限はtimeで設定する
setcookie("username" , "suzuki" , time()-60*60); - 有効期限を過去時間にするとcookieの削除
echo $_COOKIE['username'];
セッション - データをサーバー内に保存する
・以下のような利点がある
・大きなデータ
・改ざんされない
・中身が見られない
session_start(); - session開始時の定義
//$_SESSION['username'] = "suzuki";
//echo $_SESSION['username'];
unset($_SESSION[username]); - session終了の定義
echo $_SESSION('username');