gallu

エンジニアでゲーマーで講師で占い師でイベンター、な、おいちゃん。

gallu

エンジニアでゲーマーで講師で占い師でイベンター、な、おいちゃん。

最近の記事

設計とコーディングの過程

設計でもプログラムでもそうですが、ある程度思考を重ねた「結果」だけを見ると「………なんでこうなってるんだろう?」と疑問に思う事は、初学者でなくとも少なからずあるのではないか、と思います。 なので、色々な、どちらかというと「システムのパーツ」を ・ごくごく簡単でシンプルな所から ・「どんな理由」で「どんな風に編纂していくのか」 の過程を、仕様文章とコードで綴っていければ、と、ふと思いつきました。 当面、多分に実験的なコンテンツになりますが、うまく転がり出したらフォーマットそ

    • 「業務として適切と思われる切り口」でのHello world

      まずは「Hello world」を出してみましょう……はよいのですが。 plainなSlimだと、よく、こんなコードを見かけます。 $app->get('/hello/{name}', function (Request $request, Response $response, array $args) { $name = $args['name']; $response->getBody()->write("Hello, $name"); return

      • 最低限必要と思われるコンポーネントを含むインストール

        Slimのインストールをしていきます。実際には「Slim-Skeleton」というものを使いますが。 プロジェクト名を決めて、Slimをinstallしていきましょう。 一端、プロジェクト名を「slim_start」と仮定しておきます。 前提として ・PHP ・なんらかのhttpd(おいちゃんの環境はnginxです) ・composer.phar が必要になります。 そのあたりの各installについては、googleさんあたりで調べるとあちこちに書いてあるかと思いますの

        • 自己紹介

          エンジニアでゲーマーで講師で占い師でイベンター、な、おいちゃん。 メインコンテンツ Slimで学ぶPHP: https://note.mu/gallu/n/n1c3e8e6b3945 Slim 3 Framework 実践的入門: https://note.mu/gallu/n/n5f32616b5c99 設計とコーディングの過程: https://note.mu/gallu/n/n8108cab2d10f

        設計とコーディングの過程

          Slim 3 Framework 実践的入門

          PHP micro framework「Slim 3」の、幾分実践的な使い方入門を書いていきます。 随時更新予定です。 前提できるだけplainな状態で、 https://github.com/slimphp/Slim だけに近い状態で作成をしていきます。 ただ、現実的に「多少のフォルダ構成の指針」は欲しいので、 https://github.com/slimphp/Slim-Skeleton を使っていきます。 目次 ・最低限必要と思われるコンポーネントを含むインストー

          Slim 3 Framework 実践的入門

          public/index.php の最初の三行(vendor/autoload.php の挙動)

          public/index.php の最初の三行を解読していきましょう。 まず初めの2行。 use \Psr\Http\Message\ServerRequestInterface as Request;use \Psr\Http\Message\ResponseInterface as Response; については、 namespaceとuse を改めて読んでみましょう。 端的には「Requestクラスと Responseクラスを使うよ」という宣言になります。 コード

          public/index.php の最初の三行(vendor/autoload.php の挙動)

          短絡評価

          まず、プログラミング自体の概念として「短絡評価」というものがあります。 少し例を出してみましょう。 まず、単純な評価として、例えばこんなものがあります。 true && truetrue || truefalse || true これは、いわゆる論理演算子( https://www.php.net/manual/ja/language.operators.logical.php )ですね。 んで。これらは、例えば「比較演算子の結果」であったり「関数の戻り値」であったり

          短絡評価

          \Closure::bind

          無名関数と __invoke() と Closureクラス で書いたClosureクラスですが、いくつか面白いメソッドがありまして。 その一つにbindメソッドがあります。ちぃと説明をしていきましょう。 まず前提として、以下のコードを見てみます。 <?phpclass Hoge{ private $data;}//$obj = new Hoge();var_dump($obj);$obj->data = 'test'; 「Fatal error: Uncaught

          \Closure::bind

          無名関数と __invoke() と Closureクラス

          まず「無名関数」というものがあります。 PHPの公式だと http://php.net/manual/ja/functions.anonymous.php 、英語版を見ると「Anonymous functions」と書いてあります。 端的には「"名前がついていない関数"を作れる機能」です。 「………名前がついてないのにどうやって使うの?」とかいう疑問が出てきそうなので、わかりやすいサンプルを。 usortとかでサンプルを拝見したりするのですが、個人的によく使うのが set_

          無名関数と __invoke() と Closureクラス

          autoloadについて

          はじめの頃のPHPは「1ファイル完結」になることが多いかと思うのですが。 ある程度するとクラスを使うようになります。 クラスは、PHPにおいては「1ファイルに複数クラスを記述する」事も可能なのですが(言語によっては出来ません)、慣習として「1ファイルあたり1クラス」である事が多い、と思います。 ただ……それで「沢山のクラス」を使うようになると、プログラムの先頭で、require_once(requireでもincludeでもinclude_onceでもよいですが)を沢山書く

          autoloadについて

          コールバック

          PHPでは、コールバック( http://php.net/manual/ja/language.types.callable.php )というものがあります。 関数の定義で、型の所にcallback またはcallable と書かれているものですね。 例えば、usort( http://php.net/manual/ja/function.usort.php )やset_error_handler( http://php.net/manual/ja/function.set

          コールバック

          3つのstatic

          PHPでは、staticという文字が、以下の3つの文脈で出てきます。 一つは「ローカルな変数を永続化させる」ための 関数内でstaticな変数 もう一つが「静的なメソッドやプロパティを定義する」文脈で出てくる スコープ定義演算子 最後に「静的なメソッドで"自分自身を定義しているクラス名"」を得る時に使いやすい 遅延静的束縛 (Late Static Bindings) 慣れると見分けが付くのですが、慣れないと頭の中が混ざったりするケースがあるようなので。 ゆっくり、見

          3つのstatic

          遅延静的束縛 (Late Static Bindings)

          te Static Bindingsの説明を、まず、見てみましょう。 http://php.net/manual/ja/language.oop5.late-static-bindings.php PHP 5.3.0 以降、PHP に遅延静的束縛と呼ばれる機能が搭載されます。 これを使用すると、静的継承のコンテキストで呼び出し元のクラスを参照できるようになります。 より正確に言うと、遅延静的束縛は直近の "非転送コール" のクラス名を保存します。 静的メソッドの場合

          遅延静的束縛 (Late Static Bindings)

          関数内でstaticな変数

          PHPの日本語マニュアルだと「静的変数」と呼ばれるもの、になります( http://php.net/manual/ja/language.variables.scope.php#language.variables.scope.static )。 端的には、マニュアルに書いてある通り「プログラム実行がこのスコープの外で行われるようになっ てもその値を失わないません」というものになります。 ………で終わるとこのnoteがわりと「用無し」になってしまうので(笑)、少しかみ砕いて

          関数内でstaticな変数

          スコープ定義演算子

          端的には「クラス名::メソッド名()」や「クラス名::$プロパティ名」といった書式の :: (コロン二つ)の事を「スコープ定義演算子」と言います。 スコープ定義演算子は、主に「静的(static)なメソッド」や「静的(static)なプロパティ」にアクセスをするときに使われます。 静的なメソッドやプロパティは、通常普通のクラスが「newをして出来たインスタンスを介してアクセスする」のに対して「特にインスタンスを作成せず、クラス名から直接アクセスする」のが特徴です。 簡単に

          スコープ定義演算子

          自動的に定義される定数

          本文中だと __DIR__ とか、それ以外だと __FILE__ とか出てくる事があります。ちなみにアンダースコア(_)は「二つ」なので、お気を付けて。 これらは「自動的に定義される定数」になります。 http://php.net/manual/ja/language.constants.predefined.php で確認ができます。 __DIR__は PHP5.3で追加をされたので。 それ以前のバージョンですと dirname(__FILE__) と書いていました。

          自動的に定義される定数