2016年09月05日

Zend Framework 3.

ZF3
ZF1/2と違います(そりゃそうだ)
初心者なんだと思ってる!


Zend Frameworkはpublic/index.php(フロントコントローラ)に
アクセスを集めて
Controllerに割り振る(アクションコントローラとアクションに処理を渡す(ディスパッチ))仕組みになっているそうです。

PHP(のFW)はURIのパスをどんだけ楽に書くかの闘いです。


ZF3。
サーバserverにつくったappアプリケーションを見ようとすると
こんな流れだそうです。

server/app/publicを参照
public/index.php
index() @ application/src/Controller/IndexController.php
index.phtml on application/view/application/index


ZF1と2は案外変わってました。
そもそもdispatch()じゃなくてrun()でした。
だからってどう使い勝手が変わるのかイマイチ分かりません。

ただ、ZF1/2は検索したら結果豊富でした。
困ったのはZF3。


結局、本家のtutorialが最もわかりやすく…
よく見たら教えてもらうまでもありませんでした。

index.php
application.config.php
module.config.php


すごく分かりやすい。


routesにルーティング情報がまとめられてるFWと違って
configの中にルーティングが書かれてるのがZendらしい気がします
そして設定として有効ならルーティングに自由度がある


正直どっちでもいーですが
そのどっちでもいーとこにこだわるとこがこのサブ業界の若さと思います


どーでもいーって言うからには
もっとよく分かってた方が説得力あるな。。


ルーティングの仕組みざっくりわかって少し安心しました。


posted by C.C.C3 at 01:42 | Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2016年09月04日

依存性の注入、IoC

依存性の注入(Dependancy Injection)
IoC(Inversion of Control)

いずれも分かり辛い


interface AnInterface {
    public function send($m);
}

class FirstAn implements AnInterface {
    ....
}
class SecondAn implements AnInterface {
    ....
}

...

class User {
    protected $u;
    public function __construct() {
        this->u = new FirstAn();
    }
    public function send($m);
        return $this->u->send($m);
}

// Main

$user = new User();
echo $user->send("message");


例えば
インタフェイスがあって、
その実装が複数あり、
処理の中で使うとき、
SecondAnを使いたい時はUser修正しないといけない

__construct(AnInterface $u) {
    $this->u = $u;
}

Userのコンストラクタをこんな風にして

$user = new User(new SecondAn);

処理を書き換えればインタフェイス依存を回避できる。
UserクラスがFirstAnに依存してたけど、
ここに依存性を注入したというそうです。


でもこれだけじゃ十分でないそうです。
AnInterfaceの実装がいっぱいあったり、
そもそもAnInterface自体が他のクラスに依存してたらどうするかということだそう

そういう時のために
DIコンテナというのを用意します。
DIコンテナはキーワードによってどのクラスをnewするか決めてくれる人。
処理ではUser($container['First'])とかnew User($container['second'])とすることで
インタフェイスの実装をnewする場所を集約できるようです。
インタフェイスの実装が複雑な構造でもDIに隠蔽してしまえということのよう。

そりゃ間になんかおいたら
整理できるわな。。

偉そうになにをいうかと思えば
単に初心者を混乱させたいだけなんじゃ??
って思えてきました。

でも、概念は分かりましたよ







posted by C.C.C3 at 14:03 | Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

Laravelのルーティング

ここだけサクッと教えてよって思った。


・ディレクトリ新設(5.3の変更点)
 →routesディレクトリ新設→デフォルトではapi.phpとweb.phpにルーティング情報を書く

・web.php

Route::get('/', funtion() {
    return view('welcome');
}

・welcome.blade.php
 →app/resources/viewsの配下にある
 →Bladeというテンプレートエンジンが(HTMLテンプレートから)HTMLを出力するのだそう

・Controller
 →web.phpを↓みたいに変更

Route::get('/', 'WelcomeController@index');

 →app/Http/ControllersにWelcomeController.phpにindex()を定義するとコントローラが使える


・流行ってるけどダントツ遅いらしい
 →性能気にしないようなほどほどのサイトでは使いやすいのだろうと推測
  



続きを読む
posted by C.C.C3 at 03:03 | Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2016年09月03日

Laravel

PHP5のマイナーバージョンの変更点を確認

Laravelを使いたいので準備
・・・に1日がかり

・XAMPPにしたらApacheが2個になった
・Apacheアンインストールしたらサービスが残って気持ち悪い
 →sc delete Apatch2.4で削除
・Laravel5と称して5.1のこと書いたサイトが多い
・5.3からroutesのが案外変更になってた

箇条書きにしたらこんだけか、、

いらいらするけど
それにもまして名前がかわいい

posted by C.C.C3 at 01:46 | Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする