2016年6月15日水曜日

PHPのnamespace と useについて






PHPのライブラリなどで
useやnamespaceといった記述を見かけます。
一体何なんだこれ?
理解しておく必要がありそうです。
理解を深めるためにもまとめておきたいと思います。



namespaceの利用が役立つとき

別なファイルのインスタンスに同じ名前のインスタンスが
ある場合の衝突を避けることができます。


use の利用が役立つとき

namespaceが長い場合
記述画面どうなのでエイリアスを作成し参照できるようになります。


実例をと思いましたが。
簡潔にわかりやすく記載してくれているページがありました。

引用

namespaceを使わない場合に起こりえる問題点を示します。

2つのPHPファイル、lib1.phpとlib2.phpがあるとします。この2つのファイルにはそれぞれFooというクラスと、get_fooというメソッドが定義されていたとします。

・lib1.php

<?php
class Foo {
    public function get_foo() {
        return 'lib1.foo';
    }
}

・lib2.php

<?php
class Foo {
    public function get_foo() {
        return 'lib2.foo';
    }
}

ここで、これらの2つのPHPファイルを読み込んで、Fooクラスのインスタンスを生成してget_fooメソッドを実行してみます。

<?php
require_once 'lib1.php';
require_once 'lib2.php';
$foo = new Foo();
echo $foo->get_foo() . "\n";

すると、以下のようにFatal errorが発生します。

Fatal error: Cannot declare class Foo, because the name is already in use in .../lib2.php on line 3

要は、lib1.phpでFooクラスを定義していて、lib2.phpでもFooクラスを定義しているから、クラス名が重複していて怒られているんですね!

解決方法: namespaceを利用

それでは、先ほどのクラス名が衝突した問題点を、namespaceを使って解決してみます。そのために、lib1.phpとlib2.phpに、namespace xxx;という行を追加します。

・lib1.php

<?php
namespace Lib1;  // これを追加
class Foo {
    public function get_foo() {
        return 'lib1.foo';
    }
}

・lib2.php

<?php
namespace Lib2;  // これを追加
class Foo {
    public function get_foo() {
        return 'lib2.foo';
    }
}

そして、これら2つのファイルを読み込んで、先ほどと同様にget_fooメソッドを実行してみます。

先ほどの例だと、Fooクラスのインスタンスを生成するときに、$foo = new Foo();としました。今回は、lib1.phpとlib2.phpにnamespaceを追加したので、lib1.phpのFooクラスのインスタンスを生成は$foo = new Lib1\Foo()と書くことができます。また、lib2.phpのFooクラスのインスタンスは$foo = new Lib2\Foo()で生成できます。

<?php
require_once 'lib1.php';
require_once 'lib2.php';
// $foo = new Foo();
$foo = new Lib1\Foo();
echo $foo->get_foo() . "\n";  // 「lib1.foo」と出力します。

$foo = new Lib2\Foo();
echo $foo->get_foo() . "\n";  // 「lib2.foo」と出力します。

つまり、lib1.phpとlib2.phpにnamespaceを指定したので、同じFooクラスでも、Lib1というnamespace(名前空間)に属するFooクラスと、Lib2というnamespaceに属するFooクラスで、区別できるようになったということです。これで、クラス名の衝突による問題は解決できました!

useでエイリアスを作成

最後にuseを使用してみます。その前に、lib1.phpを修正します。具体的には、namespaceを長くして、Foo2クラスとFoo3クラスを追加してみます。(※これ以降、lib2.phpはでてきません。)

・lib1.php

<?php
namespace Foo\Bar\Baz\Lib1;  // 長い。。。
class Foo {
    public function get_foo() {
        return 'lib1.foo';
    }
}

class Foo2 {
    public function get_foo() {
        return 'lib1.foo2';
    }
}

class Foo3 {
    public function get_foo() {
        return 'lib1.foo3';
    }
}

先ほどのnamespaceの例のように、lib1.phpを読み込むと、FooクラスはFoo\Bar\Baz\Lib1\Foo、Foo2クラスはFoo\Bar\Baz\Lib1\Foo2、Foo3クラスはFoo\Bar\Baz\Lib1\Foo3でアクセスすることができます。

<?php
require_once 'lib1.php';
$foo = new Foo\Bar\Baz\Lib1\Foo();
$foo2 = new Foo\Bar\Baz\Lib1\Foo2();
$foo3 = new Foo\Bar\Baz\Lib1\Foo3();
echo $foo->get_foo() . "\n";  // 「lib1.foo」と出力します。
echo $foo2->get_foo() . "\n";  // 「lib1.foo2」と出力します。
echo $foo3->get_foo() . "\n";  // 「lib1.foo3」と出力します。

なんだか、Foo\Bar\Baz\Lib1\がいっぱい出現して、面倒な感じですよね。。。

ここで登場するのがuseです。useを使うと、Foo\Bar\Baz\Lib1というnamespace(名前空間)のエイリアスを作成し、Lib1で参照できるようになります!先ほどのコードはuseを使って、以下のように修正できます。

<?php
require_once 'lib1.php';
/*
$foo = new Foo\Bar\Baz\Lib1\Foo();
$foo2 = new Foo\Bar\Baz\Lib1\Foo2();
$foo3 = new Foo\Bar\Baz\Lib1\Foo3();
*/
use Foo\Bar\Baz\Lib1 as Lib1;  // Foo\Bar\Baz\Lib1を、Lib1で参照できるようにエイリアスを作成します。
$foo = new Lib1\Foo();
$foo2 = new Lib1\Foo2();
$foo3 = new Lib1\Foo3();
echo $foo->get_foo() . "\n";  // 「lib1.foo」と出力します。
echo $foo2->get_foo() . "\n";  // 「lib1.foo2」と出力します。
echo $foo3->get_foo() . "\n";  // 「lib1.foo3」と出力します。

useを使ってエイリアスを作成したら、コードがすっきりしました!

ちなみに、この例だとuseのas以降を省略することもできます。(※asを使うと、作成するエイリアスの名前をLib1以外にすることができます。)

// use Foo\Bar\Baz\Lib1 as Lib1;
use Foo\Bar\Baz\Lib1;

また、エイリアスでnamespaceだけではなくて、クラスなどのエイリアスも作成することができます。

use Foo\Bar\Baz\Lib1\Foo;
use Foo\Bar\Baz\Lib1\Foo2;
use Foo\Bar\Baz\Lib1\Foo3;
// PHP7以降は以下の記述も使えます。※asの省略も可能です。
// use Foo\Bar\Baz\Lib1\{Foo as Foo, Foo2 as Foo2, Foo3 as Foo3};
$foo = new Foo();
$foo2 = new Foo2();
$foo3 = new Foo3();


引用:https://remotestance.com/blog/3064/

2016年6月7日火曜日

人形町、小伝馬町で500円で食べれるランチのお店



常連として通っていた
さくら水産が日本橋近辺からなくなってしまいました。
残念です。
価格が500円というのは財布に優しいランチでした。

さくら水産に変わる500円以内で食べれるランチのお店は
日本橋界隈にはまだ幾つかあるようなので、
記録として残していきたとおもいます。


カフェクローバー

日替わりのランチが500円です。
ドリンクもサービスしてくれます。
店内の雰囲気がなごめます。
休日も営業してほしいです。
東京都中央区日本橋馬喰町1-5-6 ツカキビル
http://tabelog.com/tokyo/A1302/A130204/13139446/

カフェクローバー2

日替わりのランチが500円です。
ドリンクもサービスしてくれます。
カフェクローバーと同じく店内の雰囲気がなごめるところです。
浜町公園の近くなので静かでゆったりしています。
東京都中央区日本橋浜町2-44-4 2F
http://tabelog.com/tokyo/A1302/A130204/13152931/


とりいちず人形町店

2016年6月3日にオープン!
さくら水産があった場所にできた居酒屋です。唐揚げのランチが500円でたべられます。
とても美味しいです。
ランチメニューは唐揚げばかりなので、
毎日行くのはあきてしまいますが週1では行きたくなる味です。

東京都中央区日本橋人形町3-7-10日本橋DOLL-3 B1
http://tabelog.com/tokyo/A1302/A130204/13195390/


肉い奴

純レバ丼とホルモンの丼が500円でそれぞれたべれました。
野菜や味噌汁は別途支払いがひつようです。
東京都中央区日本橋小伝馬町3-6
http://tabelog.com/tokyo/A1302/A130204/13184395/


あぐらし

500円ランチがあります。
13時くらいに3回いきましたが、3回とも終了していました。
早めに行かないと食べれないことがおおいかもしれません。
東京都日本橋小舟町9-4 イートピア日本橋小舟町ビル 2F
http://tabelog.com/tokyo/A1302/A130204/13158861/

2016年5月11日水曜日

選択肢は多いのと少ないのとどちらがいいか



選択肢は多いのと少ないのとどちらがいいか

基本的に選択肢が多様であることは消費者にとってポジティブなものと考えられます
しかし、あまりにも多すぎる選択肢は、
結果として合理的な判断を邪魔し思考停止を招いたします。


選択肢が多すぎるとむしろ合理的に選べなくなる
人が商品を購入するとき
成分表示、内容量、価格等を仔細にチェックして購入するようなイノベーター気質の人は
あまりすくなく。
安い「前に使ったものと同じ」「CMで見た」「友人に勧められた」というのが
選択理由になったりするケースが多いと思います。

選択の科学」の著者なシーナ・アイエンガー教授のリサーチに「選択の難しさ」を伝える有名な調査があります。

スーパーマーケットでジャムの試食とセールスの関係を調査したものです。
お店で24種類の試供品提示と6種類の試供品提示をしてみたところ、結果に大きく差が出たました。
圧倒的に注目を集めたのはやはり選択肢の多い24種類の試供品テストでした。
しかし、セールスに結びついたのは明らかに6種類の試供品テストだったのです。
6種類テストでは30%の人が実際に商品を会計し、
24種類テストではなんと3%しか購入行動には結びつかなかったといいます。

・24種類を用意した場合
→試食に来た3%の人が購入

・6種類を用意した場合
→試食に来た30%の人が購入

10倍の違いです。


選択肢が多いというのは注目を集めることに長けていますが
決断を促すのには向いていないようです。

集客と、コンバージョンのことを考えるとき
商品をシンプルに絞込、購入に繋がるように考えたいものです。

2016年5月9日月曜日

Japanese Prepaid SIM card for foreign tourist



日本に来る訪日外国人向けのPrepaid SIMカードが
家電量販店で販売されるようなりました。
空港でも買えるようになったり、自動販売機まで出てきました。
訪日外国人にとっては便利になってきたかとおもいますが、

いろいろな種類が出てきて。
それぞれ価格もプランも違ってます。

共通していることいえば、
Docomoの回線を利用しており、その周波数帯に
対応した端末で利用可能だということ。

訪日外国人向けので、
パッケージがかっこいいけれど、
内容が今ひとつわからない。
多すぎるとどれを選択したらいいのか迷ってしまうと思います。
そんな人向けにまとめられたサービスがあります。

便利ですね。

Japanese Prepaid SIM card for foreign tourist

2015年1月15日木曜日

Chromeのユーザー切り替えをアイコンクリックに戻す方法

Google Chromeがアップデートされ
ユーザー切り替え機能が不便に改悪されたと感じる人もおおいかとおもいます。












不便に感じている人のTweetがみうけられます。

実は元に戻す方法があります。


元にアイコンをクリックしてユーザーを切り替えられた以前のほうがべんりですよね。



「新しいアバター メニュー」を「無効」にする手順


1.アドレスバーに「chrome://flags」

Chrome のアドレスバーに
chrome://flags
と入力して移動します。

2.「試験運用機能」画面




3.「新しいアバター メニューを有効にする」項目を探して「無効」

「新しいアバター メニューを有効にする」項目を探して「無効」にします。


Chromeを再起動

Chromeを再起動すると
元通りにアイコンをクリックしてユーザーを切り替えられるように戻せます。

2014年8月25日月曜日

これは便利!収納であり椅子でもありオットマンとしても活用できるスツール



スツールは背もたれとひじ掛けのない実用的な腰掛け。
はじめて知った言葉でしたが。

椅子(スツール)としても使えて、
収納としても充分有効な役割を果たし
オットマンとして足掛けとしてもつかえる
良いアイテムを見つけました。




荷重の目安:静止約80kgということですから
大抵の人は大丈夫ではないかと思います。




収納としてもこれぐらい使えれば十分です。
収納部内寸:幅43×奥行26×深さ25cm



コンパクトになるので、使用しない時は本棚などにもしまっておけそうです。



組み立てという程でもないですがとてもシンプルですね。



山善(YAMAZEN) 収納ボックススツール(取っ手付) ワイド(幅46×奥行29) ダークブラウン MSS-WHPT(DBR)
価格: ¥ 2,190 通常配送無料

2014年8月16日土曜日

棚の隙間を有効活用できるスライド収納、テーブルの引き出しにも最適

スライド収納

棚のすき間にできる空間を有効活用できるスライド収納です。
デッドスペースだったところが雑貨や小物をしまえる有効なスペースになります。
設置も簡単で棚に差し込むだけです。
スライド式の引き出しになっているので、取り出しやすくなっています。
テーブルに簡易の引き出しとしても設置できる収納です。

本棚のデッドスペースを収納スペースに


スライド収納

スライド収納

スライド収納

靴箱のデッドスペースを収納スペースに

スライド収納

スライド収納


キッチンのデッドスペースを収納スペースに

スライド収納

スライド収納

スライド収納

スライド収納



スライド収納

スライド収納

スライド収納
隙間を有効利用!収納が作れます
取り付けできる対象が、厚み「0.9〜1.8cm」。
耐負荷は3kg程度


コジット 棚のすき間に! スライド収納
価格: ¥ 1,275

2014年7月29日火曜日

ケーブルやルーターを収納できる高級感のあるケーブルボックス




デスク周りでむき出しになってしまってデッドスペースをどうしても作ってしまう
ルーター

そのルーターを収納し、さらにスマホの充電するためのスペースや
コードや電源などまとめて収納してくれる
高級感あるケーブルボックスがあります。

ごちゃごちゃして見栄えが
悪いコードやタップをすっきり見せる目隠しボックス
ルーターやモデムも収納できるサイズで、
OAタップを外から操作できるように設計されています。
組み立て不要ですぐ使える収納ボックスで
落ち着きがあり高級感のある収納になります。









天板サイズ:幅33 奥行14cm
収納部内寸:幅33 奥行12 高さ35cm
可動棚は約3cm間隔、6段階で高さ調節可能


山善(YAMAZEN) ケーブルボックス 木製 ハイタイプ TCS-3539(DBR) ダークブラウン
¥ 3,990

2014年6月30日月曜日

タイ旅行するならこんなビーチハウスで過ごしたい。



タイにいってみたいなあと思っていますが
滞在先のホテルというのは旅行経験においてとても
重要な要素になるかとおもいますが。

タイに行くならこんなビーチハウスで過ごしてみたい
だれでもそうな思いになる
ビーチハウスを紹介します。











>

















アダマン海に面したビーチハウスです。
タイに行くならこんなところで過ごしてみたいものですね。

2014年5月23日金曜日

太陽光で蓄電して優しい明かりを灯す美しいインテリア照明 「SPHELAR LANTERN」


SPHELAR LANTERNは
太陽光で蓄電して優しい明かりを灯す美しいインテリア照明です。


太陽光をためます。


ひっくり返しすと明かりをともします。


やさしい明かりです。


これぐらいの明るさが心地よいですね。


食卓も優しいエコな光をともします。





SPHELAR LANTERN(スフェラーランタン)
はスフェラーという粒状の太陽電池を使っており
発行するエコなランタンです。

昼間に太陽光を蓄えて
砂時計のようにひっくり返すと
蓄えたエネルギー分だけ明かりを灯してくれます。

重さ:約 865g
電球:LED
付属品:USBケーブル、ACアダプター
点灯時間:4時間(フル充電)

graf / グラフ SPHELAR LANTERN スフェラーランタン 白樺 送料無料 【楽ギフ_包装】 【楽ギフ_のし】

graf / グラフ SPHELAR LANTERN スフェラーランタン 白樺 送料無料
価格:32,400円(税込、送料込)

関連時事

人気の投稿