🎷

PHP開発1日目

2024/04/28に公開

毎日PHPのコードを書いて何か作る

PHPのソフトウェアエンジニアになりたい

PHPって気軽で良いですよね。
オブジェクト指向プログラミングでも書けるので、書きやすいし公式ドキュメントもわかりやすい。
毎日何か作ってちょっとずつスキルを上げていきます。
フリーランスとして仕事を受けられるくらいになりたいです。

Javaを捨てた

30代半ばからJavaを学び、オブジェクト指向に傾倒した数年前
SESの営業からは「たぶんJava」と言われたメインフレームの現場
Javaの開発案件に入りたいと希望して転職したIT派遣会社での案件は、Excel方眼紙だらけの運用保守

もう大手SIerの現場には行かないと決意し、自分でもWebアプリが開発しやすいPHPにメイン言語を変更しました。Javaを愛していましたが、Javaの現場で探すと大手SIerのExcel方眼紙がセットになってくるので、もうJavaは捨てました。
さようならJava、こんにちはPHP

Laravel難しい

PHPをやると決めて、今一番熱いフレームワークのLaravelに手を出してみましたが、これがなかなか難しいです。フルスタックのファットフレームワークは最低限のお作法を覚えるだけでも大変
Udemyで講座をいくつか買って進めていますが、やはり講師の話を聞いたり写経しても身につかないと思い、毎日少しでも書いて何か作ろうと決意しました。
簡単なものからこつこつと。

PHP、Laravel、CodeIgniter

これらを使って毎日何か作って、GitHubで草生やしていきます。

Day1 おみくじアプリ作成

久々にPHPを書くのでだいぶ忘れています。
Laravelの講座を流し見してても何も身についてない、、、
書かないとダメですね

基礎の基礎から復習

どうやってPHPのコードを動かす?

LAMP環境で、拡張子「.php」ファイル内でどうやってPHPのコード記述するんだっけ?

result.php
<?php
?>

ここからですね。思い出してきました。

変数ってどうやって宣言するの?

これは覚えていました。
「$」を頭につければ良いんでしょ?
命名規則ってどうだっけ?忘れた。

【初心者必見】php 変数名の付け方

フォームってどうやって作れば良いんだっけ?

form.php
<form action="server.php" method="get">
    <p><input type="text" name="first_name">苗字</p>
    <p><input type="text" name="last_name">名前</p>
    <p><input type="submit" value="送信"></p>
</form>

初学者用サイトに教えてもらいました。
actionでデータを投げる対象のファイルを指定して(絶対パスでも相対パスでも可)、  
methodで通信方法を指定すると。今回はGET通信にしてみよう。URLで内容確認できるし。

投げられたデータをどうやって受け取れば良いんだっけ?

スーパーグローバル変数(かっこいい)で受け取ってくれる。なんかあったな。記憶の片隅に残ってます。
今回はGET通信で投げてるから

result.php
<?php
$firstName = $_GET["first_name"];
$lastName = $_GET["last_name"];
?>
$_GET[""];
//で投げられたデータを受け取る。
//POST通信だったら
$_POST[""];  
//超便利ですね。

HttpServletRequest型のオブジェクトと格闘していた頃が懐かしいです。JSPに渡したり、、、
Javaの現場入ってもエクセル方眼紙しかやらないのでもうJavaは捨てましたが。

改行ってどうやれば良いんだっけ

brタグをechoしてやって、無理矢理HTMLに改行タブを入れれば良いのはなんとなくわかる。
何かスマートな方法無いんだっけ?
「\n」をくっ付ければ改行されるとな。
・・・うん、改行されない。Macだとまた違うやらなんやら、、、
関数もあるみたいだけど、今回はいいや

echo "<div/>";

switch文ってどうやって書くんだっけ?

調べるのも面倒になってきたので、VScodeに保管してもらいましょう。
初学者用のサイトが増えすぎてパッと調べてパッと答えが出てこない、、、(余分な情報が多すぎ)

switch ($variable) {
    case 'value':
        # code...
        break;
            
    default:
        # code...
        break;
        }

条件の判定がどのくらいの強さで行われるかよくわからないけど、とりあえず無視しよう。
また今度気が向いたときに調べよう。

おみくじアプリになるように、7つの値を持たせれば良いのかな。
あと、おみくじだから乱数を発生させよう。
rand()関数で乱数出るのね。引数で乱数の幅を設定できるのか。
0から6の7つ分の乱数を発生させよう。 「rand(0, 6)」

<?php
$random = rand(0, 6);
$result;
switch ($random) {
    case 0:
        $result = "大吉";
        break;
    case 1:
        $result = "吉";
        break;
    case 2:
        $result = "中吉";
        break;
    case 3:
        $result = "小吉";
        break;
    case 4:
        $result = "末吉";
        break;
    case 5:
        $result = "凶";
        break;
    case 6:
        $result = "大凶";
        break;
}
?>

これで、素材は揃った。
PHPファイルは「form.php」「result.php」を用意
LAMP環境のサーバーに上げるほどのもので無いから、MAMPでローカルサーバーを立てて実行。

form.php
<form action="server.php" method="get">
    <p><input type="text" name="first_name">苗字</p>
    <p><input type="text" name="last_name">名前</p>
    <p><input type="submit" value="送信"></p>
</form>
result.php
<?php
$firstName = $_GET["first_name"];
$lastName = $_GET["last_name"];

$random = rand(0, 6);
$result;
switch ($random) {
    case 0:
        $result = "大吉";
        break;
    case 1:
        $result = "吉";
        break;
    case 2:
        $result = "中吉";
        break;
    case 3:
        $result = "小吉";
        break;
    case 4:
        $result = "末吉";
        break;
    case 5:
        $result = "凶";
        break;
    case 6:
        $result = "大凶";
        break;
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>占い結果</title>

</head>
<body>
    <?php
        echo $firstName . $lastName . "さん";
        echo "<br/>";
        echo "あなたの今日の運勢は" . $result . "です。";
    ?>
</body>
</html>

完成

久々のPHP、そしてコード書き
久々ですが、自分で書くと楽しいですね。
復習含めて所要時間30分くらい。

SIerの現場に入った時に、エクセルで資料作るのがSEの仕事で、コード書きは能力が低い人や新人がやる仕事っていう変なヒエラルキーができていて、誰もプログラム書けないし誰もIT技術に興味がないという状態でした。
私はそれが嫌だったので、SIer、SES業界から抜け出し、PHPで自分でサービスを作ったり、エクセル方眼紙がないしっかりとしたプロジェクトに入れるように頑張ります。

昔登録したGitHubにも草を生やしていきます。

Day1 おみくじアプリ

Discussion