【PHP】echoとprintの違い
echoとprintの違いって何? と思って調べる→よくわからない、の繰り返しなので、きちんと調べてまとめておきたいと思います。
php公式マニュアルはこちら
【echo】
【print】
上記サイトの記述によると
【echo】
print との主な違いは、 echo がリスト形式の引数を受け付け、返り値を持たない。
【print】
echo との主な違いは、 print が単一の引数のみ受け付け、常に 1 を返す。
とあります。それぞれ詳しく見ていきます。
→echo がリスト形式の引数を受け付け、print は単一の引数のみ受け付ける
<?php // echo echo 'apple', 'orange', 'banana'; // print print 'apple','orange','banana'; ?>
このとき、echoは'appleorangebanana'と出力されますが、 printはエラーとなって出力されません。
→echoは返り値をもたず、printは常に 1 を返す。
<?php $echo = echo 'PHP'; $print = print 'PHP'; ?>
printは返り値を持つので、'PHP'が$printに代入されますが、echoだとエラーとなります。
短縮形である<?=
はechoとして取り扱われるそうです。
また、echoは返り値を返さない分速度が若干速いそうです。
【PHP】「echo」と「print」の違い/速度の違いについて - MEMO REC
特段変な文字列を出力しないのであれば、echoもprintもどちらでもいい感じはしますね。 私は今までechoを使用していたので、今後もechoを使っていく予定です('ω')ノ
【CSS】Mixinについて
前回cssにおける継承についてまとめました。 今回は継承と似た機能を持つ「Mixin」について取り上げます。
Mixin @mixin
@mininの記述の後にクラスを書き、 利用するときは@includeで呼び出します。
@mixin box{ width: 50%; height: 50%; } .red_box{ @include box; background: #ee3f3f; }
.red_box { width: 50%; height: 50%; background: #ee3f3f }
継承ではextend元のクラスとグループ化されて出ていましたが、Mixinはそうでないことが分かります。 また、Mixinではスタイルに引数を持たせることができ、コードに置き換えることができます。
色を引数に設定する場合
@mixin box($color:#000000){ // 引数:hogeで初期値を指定 width: 50%; height: 50%; background: $color; } .red_box{ @include box(#ee3f3f); }
.red_box { width: 50%; height: 50%; background: #ee3f3f }
引数を設定してあげることでred_boxに色を指定することができました。
継承とMixinとの違いは ・コンパイル後グループ化されるか ・引数を使えるかどうか になります。使いどころを見極めて使用していければと思います。
【CSS】継承
cssにおける継承について。
継承 @extend
定義したクラスを他のクラスで受け継ぐことができます。 例えば、appleというクラスから、色を設定したgreen_appleというクラスを作りたいとします。
.apple { width: 50%; height: 50%; } .green_apple { width: 50%; height: 50%; color: green; }
appleクラスを複製し、色を設定すると作成することができます。 ただし、この場合widthやheightが変わったとき、appleとgreen_appleの2箇所変更しなければならず保守性がいまいちです。
そこで継承を使用します。
SCSS
.apple { width: 50%; height: 50%; } .green_apple { @extend .apple; //appleクラスを継承 color: green; }
appleクラスを継承して色のみ指定してあげることで、appleクラスを適用させたgreen_appleクラスが作成できます。 ただし、@extendを使う場合は1つ注意が必要です。
CSS(出力)
.apple, .green_apple { width: 50%; height: 50% } .green_apple { color: green }
これは先程の継承を使ったscssから作成したcssです。 green_apple クラスが継承元のセレクタ(apple)にグループ化されています。
ここで、appleクラスをcssに出したくない、グループ化しないでほしい!という場合はプレースホルダー(%)を使います。 使い方は、.appleの「.(ドット)」を%に変えます。
%apple { width: 50%; height: 50%; } .green_apple { @extend %apple; //appleクラスを継承 color: green; }
.green_apple { width: 50%; height: 50% } .green_apple { color: green }
appleクラスが出力されなくなりました。 共通部品など色々なところで使用するクラスは、一つ定義してそれを継承して使い回すと 統一できていいですね。
[参考サイト]