SlideShare a Scribd company logo
PHPカンファレンス
2020
PHP初心者セッション
ハッシュタグ
#phpcon #Track3
Discord
#track3-1-beginner
⽇本PHPユーザ会
有限会社アリウープ
柏岡 秀男
アジェンダ
⾃⼰紹介
PHPとは
PHPの⽂法
マニュアルの読み⽅
実践編
⾃⼰紹介
有限会社アリウープ 取締役社⻑
認定スクラムマスター&プロダク
トオーナー
PHPカンファレンス初回から参加
実は実⾏委員⻑です(汗
会社概要
WEBシステム開発を中⼼
PMO、スクラム導⼊
システム周り全般
⽕を消すのが得意です。
対象とな
る皆様
PHP書いたこと無い
⼊⾨書読んだけど、途中
で挫折
他の⾔語で⼊⾨程度
PHPとは
PHPとは
PHP is a popular general-purpose scripting language that is
especially suited to web development. Fast, flexible and
pragmatic, PHP powers everything from your blog to the most
popular websites in the world.
http://php.net/より
PHPは、特にウェブ開発に適した⼈気のある汎⽤スクリプト⾔
語です。 ⾼速で柔軟性があり、実⽤的なPHPは、あなたのブロ
グから世界で最も⼈気のあるウェブサイトまで、あらゆるもの
を強⼒にサポートします。
DeepLの翻訳
PHPとは
WEB開発に適した⾔語
PHP8でさらなる可能性
PHPの歴史
1994年にRasmusがオンラインで公開している経歴書のアクセス
履歴を調べるために使われていました
彼はそのスクリプト群を「Personal Home Page Tools」と名付
けました。
http://php.net/manual/ja/history.php.php
PHPのsoftware
Phpcon tokyo 20120_bigginer
PHPの環境
LAMP
Linux Apache MySQL PHP
LAPP
Linux Apache Postgre PHP
LEMP
Linux Nginx MySQL PHP
どんな環境ではじめるか
ホスティング
レンタルサーバ
AWS
Azure
GCP
ローカル
XAMPP
MAMP
Docker
公式サイト
https://www.docker.com/
Windows
https://docs.docker.jp/docker-for-windows/install.html
Mac
https://docs.docker.jp/docker-for-mac/toc.html
Docker PHP8!
https://github.com/docker-library/docs/blob/master/php/README.md#supported-tags-
and-respective-dockerfile-links
docker
compose
複数のコンテナを管理できる。
https://docs.docker.com/compose/gettin
gstarted/
ディレクトリのマッピングやポートの変換
などがymlで管理できる
Dockerによる
開発環境
docker-composeを使⽤する
場合
dockerのインストール
docker-compose.ymlの作成
dockerの起動
docker-compose.yml
version: '3'
services:
php:
image: php:8.0-fpm-alpine3.12
expose:
- '8080'
ports:
- '8080:80'
volumes:
- ./phpapps:/home/www-data
working_dir: /home/www-data
command: php -S 0.0.0.0:80
dockerイメージ
名
公開ポート
ホスト側とコンテナ
のポート
ボリュームのマウ
ト
コマンドの実⾏
ビルトインサーバ
ディレクトリ構成
• ./
• docker-compose.yml
• phpapps/ => ここがdockerと共有されている(ビルトインサー
バのディレクトリ)
• ローカルのファイルを修正するとdocker側で実⾏可能
起動⽅法
対象ディレクトリに
移動して
docker-compose up
-d 開始
docker-compose
stop終了
実⾏してみま
しょう。
index.phpを作成して
確認してみましょう
http://localhost:8080/
Phpcon tokyo 20120_bigginer
PHPの概要
PHPの基本
PHPの⽂法は直感的です。
他の⾔語をやっていない⽅が⼾惑いません。
WEB構築に最適な⾔語です。
※個⼈の感想です
PHPタグ
<?php ?> PHPモード;
HTMLのタグのようなイメージ;
<html>
<body>
<?php
echo "こんにちは";
?>
</body>
</html>
⼀番かんたんなサンプル
http://localhost:8080/1st.php
拡張⼦
ファイル名.php
構⽂
変数は$で始まる;
⽂末は;で終わる
型宣⾔などは厳密に⾏わなくて使えるケー
スが多い。
簡単なサンプルを⾒てみましょう
<?php
$a = 'こんにちは';
echo $a;
変数の例
PHPからHTMLも出⼒
<?php
echo "<html>";
echo "<body>";
echo "これはPHPです";
echo "</body>";
echo "</html>";
http://localhost:8080/sample2.php
$a = "A" . "B";
$b = 1 + 2;
⾜したり結合したり
$a = "A";
$b = "B";
$c = $a . $b;
変数値が数字なら演算も可能
変数でも結合
$a = "phpcon";
$b = 2017;
echo $a . ($b +3);
http://localhost:8080/sample3.php
拡張⼦
PHPの関数
•if
•foreach
•strlen
•htmlspecialchars
•nl2br
•mb_convert_encording
if 〜 else (endif)
条件判定を⾏う
条件を満たす満たさないの判断を⾏う
<?php
if($a) {
echo '条件を満たす';
} else {
echo '条件を満たさない';
}
<div>満た
<?php if($a): ?>
<div id='a'>す</div>
<?php else: ?>
<div id='c'>さない</div>
<?php endif; ?>
</div>
どんな時に使
うか
⼊⼒値が予想と違
う
取得した値によっ
て処理を切り分け
る
条件分岐が
複数ある場
合 switch
<?php
$a =“2";
switch($a) {
case 1:
echo ʻfirstʼ;
break;
case 2:
echo 'second';
break;
case 3:
case 4:
echo 'other';
break;
default:
echo 'default';
break;
}
http://localhost:8080/switch.php
条件が複数
ある場合
(PHP8)
<?php
$a = 6;
echo match($a) {
1 => 'first',
2 => 'second',
3,4 => 'other',
default => 'default'
};
http://localhost:8080/match.php
HTML組み込み型のサンプル
WordPressの場合
wp-content/
themes/
twentytwentyone/
header.php
繰り返し処理
for 決まった回数など
foreach 配列の繰り
返し
while(do while) 条件
がtrueの間
配列の添字は0から始まります。
<?php
$numbers = array('2','3','4','5','6');
echo $numbers[0]; //2が表示
echo $numbers[2]; //4が表示
http://localhost:8080/sample40.php
最も利⽤するであろうforeach
<?php
$numbers = array('2','3','4','5','6');
foreach($numbers as $val) {
echo $val;
}
http://localhost:8080/sample4.php
key value
<?php
$numbers = array(
'名前' => '柏岡',
'出身' => '東京',
'役割' => 'スクラムマスター');
foreach($numbers as $key => $val) {
echo $key . ':' . $val . '<br/>';
}
http://localhost:8080/sample5.php
表⽰すると怖い⽂字を置き換える
htmlspecialchars
&"'<>といったHTMLで意味ある⽂字をhtmlの表⽰形式に変換する
=
javascript、不正なsql実⾏等によるセキュリティーリスクを回避す
る。
⼊⼒されたデータは出⼒する直前に必ずhtmlspecialcharsを通す
フレームワークを使っていても確認しましょう。
<?php
$new ="<a href='test'>Test</a>";
echo $new;
<?php
$new ="<a href='test'>Test</a>";
echo htmlspecialchars($new,ENT_QUOTES);
http://localhost:8080/sample6.php
どのように
表⽰される
か?
ファイルの読み込み
htmlの量産にも便利
require_once
<?php
require_once('header.html');
require_once('body.php');
require_once('footer.html');
http://localhost:8080/sample7.php
値を取得する
⼊⼒フォームから⼊⼒された値
$_POST
http://localhost:8080/get.php?id=123456
$_GET
何が⼊ってくるかわからないので利⽤までに注意
する!
バリデーションやDB専⽤のエスケープ処理、プ
リペアードステートメントなど
値の取得
<?php
echo $_GET['id'];
echo $_POST['id'];
実際はhtmlspecialchars()したり
値の確認
var_dump()
http://localhost:8080/var_dump.php?id=1
関数
• 繰り返される処理を共通化
• function 関数名([型] [引数],,,) {
• }
• なんども出てくる処理を関数化しておく
。
<?php
function hsp(string $str) {
return htmlspecialchars($str,ENT_QUOTES);
}
function add1(int $num = 0) {
return $num + 1;
}
echo hsp('<');
echo add1(10);
http://localhost:8080/sample8.php
これくらいわかればOK
⾃分この先進む場合はクラスの扱いなどを勉強しましょう
PHPのオンラインマニュアルの充実度が凄い
PHPの歴史
https://www.php.net/manual/ja/history.php.php
⾔語リファレンス
https://www.php.net/manual/ja/langref.php
次の⼀歩
アプリケーションをインストー
ルしてみる
フレーム
ワークを
使ってみ
よう
Laraval
CakePHP
Symphony
CodeIngiter
⽇本
世界
実践編
CSVファイルを
読み込んで表
⽰するプログ
ラムを作る
材料
開発環境
お好きなエディタ
php.net マニュアル
CSVファイル
CSVを読み込む
関数名がわからなければとりあえず検索
fgetcsvってのが⾒つかった
https://php.net/manual/ja/function.fgetcsv.php
がんばって読むとわかる
わからなければサンプルを
php.net より
php.net より
さらにマニュアルで調べてみよう
わからない関数を右上に⼊れてみる。
マニュア
ルを読ん
でみる
fopen ̶ ファイルまたは URL をオープンする
whileループは、PHPで最も簡単なタイプのル
ープです。
count ̶ 変数に含まれるすべての要素、 ある
いはオブジェクトに含まれる何かの数を数える
fclose ̶ オープンされたファイルポインタを
クローズする
これを踏まえて
なんとなくわかった
サンプルを
そのまま動
かしてみる
•http://localhost:8080/csv.php
•Warning: fopen(test.csv):
Failed to open stream: No such
file or directory in
/home/www-data/csv.php on
line 3
•エラーがでるのでcsvファイル
を置いてみましょう。
test.csvを作る
"トラック","タイトル","開始時間"
"Track1","PHPの今とこれから2020","09:40"
"Track1","PHP WEBアプリケーション設計⼊⾨――10年先を⾒据えて
"Track1","玩具サブスクリプション・レンタルサービスの代表の⼦ども
"Track1","3分で分かるConnehito Tech Vision","12:05"
"Track1","Lenet の開発環境の紹介","12:10"
"Track1","福岡市のお墨付き!エンジニアフレンドリー企業に選ばれた
"Track1","PHP8 on AWS lambda","12:20"
"Track2","NewRelicプラットフォームを使ったオブザーバビリティ⼊⾨
"Track2","レガシープロジェクトで、メタプログラミングを使ったPHP
"Track3","初⼼者セッション","10:40"
"Track4","Laravelで運⽤しているサービスをNuxt.jsにリプレイスする
"Track4","LaravelDB.comを使ってDB設計「Migration⽣成」の基本操
"Track6","PHP 8.0: A new version, a new era","10:40"
ファイルを置いて実⾏してみましょう
csvファイルを置く場所はphpファイルと同じ階層にします。
Phpcon tokyo 20120_bigginer
プログラムのパートを⾒てみましょう
不要なものを消
しましょう
$num や $rowは不要
echo "<p> $num fields in line $row: <br /></p>n";
$numはforループで使ってます。
でも短くなりました
実⾏すると
ループの構造
count($data)で出している
1⾏のフィールド数は決まっているので
内側のループをやめてみる。
テーブルで表⽰してみましょう
テーブルの構造
同じような部分をループで表⽰させる
ループを同様に繰り返させる
テーブル作成
⾊々調整してみよう
表⽰する項⽬を選択する
表⽰項⽬にはhtmlspecialchars()をかける
絞り込みを⼊れる
http://localhost:8080/list.php
サンプルソース
<h1>PHPカンファレンス2020 前半セッション</h1>
絞り込み:<a href="list.php?room=Track1">Track1</a>
<a href="list.php?room=Track2">Track2</a>
<a href="list.php?room=Track3">Track3</a>
<a href="list.php?room=Track4">Track4</a>
<a href="list.php?room=Track6">Track6</a>
<table border=1>
<?php
if (isset($_GET['room'])) {
$room = $_GET['room'];
}else{
$room = 'Track1';
}
if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
if ($room === $data[0] ) {
echo "<tr>";
echo "<td>". hsc($data[0])."</td>" . PHP_EOL;
echo "<td>". hsc($data[1])."</td>" . PHP_EOL;
echo "<td>". hsc($data[2])."</td>" . PHP_EOL;
echo "</tr>";
}
}
fclose($handle);
}
?>
</table>
<?php
function hsc(string $str) {
return htmlspecialchars($str,ENT_QUOTES);
}
Phpcon tokyo 20120_bigginer
マニュアルと仲良くなろう
懇親会
• 他の開発者やスピーカー
と直接話すチャンス!
• 今年はオンラインですが、
積極的に話しましょう。
お勧め書籍
「いちばんやさしいPHPの教本」私が書いています。
いま何を作っているのかを考える
まとめ
PHPの環境を作ってみましょう。
PHPアプリケーションをインストー
ルしてみましょう
簡単なプログラムを書いてみましょ
う。
フレームワークのチュートリアルを
してみましょう。
アプリのカスタマイズをしてみまし
ょう。
ぜひお試しください!
ご視聴ありがとうございました。
カンファレンスを楽しんでください
!
2020/12/21
明⽇の開発カンファレンス2020開催
アスカン2020で検索!
12/21開催!
PHP初⼼者セッション
有限会社アリウープ
柏岡 秀男
twitter,facebook @kashioka
#track3-1-beginner
Phpcon tokyo 20120_bigginer

More Related Content

PPTX
PHP基礎勉強会
PDF
PHPでセキュリティを真面目に考える
PDF
Hack/HHVM 入門
PDF
phpspecで学ぶLondon School TDD
PDF
PHPの今とこれから2016
PDF
Modern PHP Programming @ PFI Seminar
PDF
最近の PHP の話
PPT
アプリコンテスト
PHP基礎勉強会
PHPでセキュリティを真面目に考える
Hack/HHVM 入門
phpspecで学ぶLondon School TDD
PHPの今とこれから2016
Modern PHP Programming @ PFI Seminar
最近の PHP の話
アプリコンテスト

What's hot (20)

PDF
KEY
WCO2012「PHP教室」
PDF
PHP の GC の話
PPTX
PHP AST 徹底解説
PDF
クリーンな WordPress サイトのための PHP コーディングのお作法 ― 計画的に WordPress を拡張していくためのフレームワーク思考 |...
PDF
PHPの今とこれから2014
PDF
Behatで行う、E2Eテスト入門
PDF
PHPの今とこれから 2013
PDF
Web デザイナーが身に付けておきたい定番スキル ーPHP 初級編ー
PDF
Windows で拡張モジュールをビルドしてみた
PDF
実"戦"CakePHP Plugin
PDF
今、最もイケてるPHPフレームワークLaravel4
PDF
CodeIgniter入門
PDF
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
PDF
Laravelとテストについて
PDF
第21回Creators MeetUp
PDF
PECL を数えてみた
PPTX
php-src の歩き方
PPT
Puppet Best Practices? at COOKPAD
PDF
WTM53 phpフレームワーク いまさらcodeigniter
WCO2012「PHP教室」
PHP の GC の話
PHP AST 徹底解説
クリーンな WordPress サイトのための PHP コーディングのお作法 ― 計画的に WordPress を拡張していくためのフレームワーク思考 |...
PHPの今とこれから2014
Behatで行う、E2Eテスト入門
PHPの今とこれから 2013
Web デザイナーが身に付けておきたい定番スキル ーPHP 初級編ー
Windows で拡張モジュールをビルドしてみた
実"戦"CakePHP Plugin
今、最もイケてるPHPフレームワークLaravel4
CodeIgniter入門
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
Laravelとテストについて
第21回Creators MeetUp
PECL を数えてみた
php-src の歩き方
Puppet Best Practices? at COOKPAD
WTM53 phpフレームワーク いまさらcodeigniter
Ad

Similar to Phpcon tokyo 20120_bigginer (20)

PDF
PHP初心者セッション2023 〜ChatGPT時代の簡単な始め方〜
PPTX
PHPCON_TOKYO_2022_Bigginer.pptx
PPT
2009 PHP初心者
PPTX
Php初心者セッション2014ppt
PPTX
<第1回>Laravelハンズオンセミナー
PDF
『PHP逆引きレシピ』とセキュリティのこと
PDF
WebAPIではじめるphp入門
PDF
最新PHP事情 (2000年7月22日,PHPカンファレンス)
PDF
フレームワークを使うべき 3 つの理由
PPTX
PHP初心者セッション2013
PDF
FuelPHP Osu Nagoya vol.1
PDF
第104回 php勉強会@東京 Laravel
PDF
PHPの今とこれから2015
PDF
WordPress テーマ作成&PHP超入門
PDF
10分でわかるFuelPHP @ 2011/12
PDF
はじめてLaravelさわった 第86回php勉強会
PPTX
php in ruby
PDF
FukuokaPHP 3
PDF
PHPカンファレンス2014の懇親会飛び込みLT資料
PDF
Login facebook
PHP初心者セッション2023 〜ChatGPT時代の簡単な始め方〜
PHPCON_TOKYO_2022_Bigginer.pptx
2009 PHP初心者
Php初心者セッション2014ppt
<第1回>Laravelハンズオンセミナー
『PHP逆引きレシピ』とセキュリティのこと
WebAPIではじめるphp入門
最新PHP事情 (2000年7月22日,PHPカンファレンス)
フレームワークを使うべき 3 つの理由
PHP初心者セッション2013
FuelPHP Osu Nagoya vol.1
第104回 php勉強会@東京 Laravel
PHPの今とこれから2015
WordPress テーマ作成&PHP超入門
10分でわかるFuelPHP @ 2011/12
はじめてLaravelさわった 第86回php勉強会
php in ruby
FukuokaPHP 3
PHPカンファレンス2014の懇親会飛び込みLT資料
Login facebook
Ad

More from Hideo Kashioka (9)

PDF
実体験に基づく、成功するスクラム vs 失敗するスクラム 何が違う? 2024年6月22日
PDF
スクラム初心者セッション.pdf
PPTX
XP祭りオフショアメンバーのいるスクラム.pptx
PDF
日本とオフショアのハイブリットチームのスクラム
PDF
Phpcon2020sponsor lt php8_on_lambda
PDF
Phpcon2001 in tokyo
PPTX
明日の開発カンファレンスパネル
PDF
PHPカンファレンス2016 初心者セッション
PPT
Php+Word Press
実体験に基づく、成功するスクラム vs 失敗するスクラム 何が違う? 2024年6月22日
スクラム初心者セッション.pdf
XP祭りオフショアメンバーのいるスクラム.pptx
日本とオフショアのハイブリットチームのスクラム
Phpcon2020sponsor lt php8_on_lambda
Phpcon2001 in tokyo
明日の開発カンファレンスパネル
PHPカンファレンス2016 初心者セッション
Php+Word Press

Phpcon tokyo 20120_bigginer