備忘録

気になったこと、調べたこと、わからなかったことなど..

【PHP】echoとprintの違い

echoとprintの違いって何? と思って調べる→よくわからない、の繰り返しなので、きちんと調べてまとめておきたいと思います。

php公式マニュアルはこちら
【echo】

PHP: echo - Manual

【print】

PHP: print - Manual

上記サイトの記述によると
【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クラスが出力されなくなりました。 共通部品など色々なところで使用するクラスは、一つ定義してそれを継承して使い回すと 統一できていいですね。

[参考サイト]

https://designsupply-web.com/media/knowledgeside/6353/

https://kaminarimagazine.com/web/2016/09/30/sass-%E3%83%97%E3%83%AC%E3%83%BC%E3%82%B9%E3%83%9B%E3%83%AB%E3%83%80%E3%83%BC%E3%82%92%E4%BD%BF%E3%81%8A%E3%81%86%EF%BC%81/