Page 1
ぺちこん北海道
学生ランチセッション
PHP for Students
PHPカンファレンス北海道 実行委員会
USAMI Kenta
2024-01-13
PHPカンファレンス北海道2024
公開日:
by USAMI Kenta@tadsan
ぺちこん北海道
学生ランチセッション
PHP for Students
PHPカンファレンス北海道 実行委員会
USAMI Kenta
2024-01-13
PHPカンファレンス北海道2024
お前誰よ
tadsan loves 北海道
tadsanとPHP
<?php
さて
PHPは何ができる 言語なのでしょうか
とにかく毀誉褒貶が
激しい言語ランタイム
Webトラフィック
W3Techs 統計
パッケージ数
PHPはどこで
使えるのか
PHPは汎用プログラミング言語
PHPは汎用プログラミング言語
PHPは汎用プログラミング言語
みなさんの想像する
PHPとは
A
<!DOCTYPE html>
<html><head><title>Hello, PHP!</title></head>
<p>
<?php if (date('H') < 19): ?>
こんにちは
<?php else: ?> こんばんは
<?php endif; ?>
</p>
<p>今は<?= htmlspecialchars(date('H')) ?>時です</p>
B
<?php require 'bootstrap.php';
$db = mysqli_connect();
$stmt = mysqli_prepare($db, 'SELECT * FROM books');
mysqli_stmt_execute($stmt); print '<h1>本の一覧</h1>';
print '<ul>';
foreach ($stmt as $s) {
print '<li>'; print $s->name; print '</li>';
}
print '</ul>';
C
<?php declare(strict_types=1);
namespace Foo\Http\Controller;
class BooksController extends BaseController {
public function index() {
$books = Books::getAll();
$this->render(compact("books"));
}
}
P H P の原作者
ラスマスかく語りき
2007年 MySQL Conference
“We have things like protected properties. We have abstract methods. We have all this stuff that your computer science teacher told
you you should be using.
I don't care about this crap at all.”
–Rasmus Lerdorf
https://en.wikiquote.org/wiki/Rasmus_Lerdorf
2007年 MySQL Conference
には プロパティも
“PHP protected
抽象メソッドもありますよ。計算機科学の
教授が「使え」と言ってるものは全部。
そんなことはクソ興味ないですけど
”
(tadsan )
–Rasmus Lerdorf
による超訳
変数に$があって
Perlっぽくて
C言語っぽい
関数と
-> があって
雰囲気Javaっぽい オブジェクト指向で
PHPは見る人の心を映す
整理しましょう
A=SSIスタイル
<!DOCTYPE html>
<html><head><title>Hello, PHP!</title></head>
<p>
<?php if (date('H') < 19): ?>
こんにちは
<?php else: ?> こんばんは
<?php endif; ?>
</p>
<p>今は<?= htmlspecialchars(date('H')) ?>時です</p>
Perl
use DBI;
$db = DBI->connect('...');
$stmt = $db->prepare('SELECT * FROM books');
$stmt->execute;
print '<h1>本の一覧</h1>'; print '<ul>';
for ($i = 0; $I < $sth->rows; $i++) {
@row = $sth->fetchrow_array;
print '<li>'; print $row[0]; print '</li>';
}
print '</ul>';
B=CGIスタイル
<?php require 'bootstrap.php';
$db = mysqli_connect();
$stmt = mysqli_prepare($db, 'SELECT * FROM books');
mysqli_stmt_execute($stmt); print '<h1>本の一覧</h1>';
print '<ul>';
foreach ($stmt as $s) {
print '<li>'; print $s->name; print '</li>';
}
print '</ul>';
C=OOPスタイル
<?php declare(strict_types=1);
namespace Foo\Http\Controller;
class BooksController extends BaseController {
public function index() {
$books = Books::getAll();
$this->render(compact("books"));
}
}
PHPは汎用プログラミング言語
PHPの歴史
PHPと文字列
PHPのオブジェクト指向機能
PHPのオブジェクト指向機能
<?php <?php
class Book { class Book {
/** public function __construct(
* @var string public readonly string $name,
* @readonly ) { */ }
private $name;
...
/** @param string $name */
public function __construct($name) {
$this->name = $name;
...
静的解析しやすい特徴
PHPの進化は 型宣言の進化
いまやPHPは
静的型付きと言っても
過言ではない
(本当か…?)
型がついていない関数(PHP5)
function add($a, $b) {
return $a + $b;
}
スカラー型宣言(PHP7)
int + intって
本当にintなの?
function add(int $a, int $b): int {
return $a + $b;
}
広い値をとるにはfloatが必要
ひとつの解決策では
あるが… 不必要にhoat
を強制するのか
function add(float $a, float $b): float {
return $a + $b;
}
PHPDocの型注釈
(アノテーション)
/**
* @param int|float $a
あえて型宣言を省略する
* @param int|float $b
* @return int|float
*/
function add($a, $b) {
return $a + $b;
}
ユニオン型宣言 (PHP8.0)
function add(int|float $a, int|float $b): int|float {
return $a + $b;
}
LL言語としてのPHP vs エディタ
PHPと静的解析
PHP Static Analysis Tool
PHPStanとは
PHPStanの提供する型
PHP処理系
PHPの開発体制
PHPは誰が開発しているのか
PHPはどこに行くのか
PHPは過去と未来を繋ぐ言語
Webの世界のトレンド
PHPはどこでも65点がとれる言語
PHP先生の
雑草のような生命力に
ご期待ください!
