LoginSignup
2
1

More than 5 years have passed since last update.

phalconのvoltエンジンのビルトインで色々判定

Last updated at Posted at 2018-11-26

概要

phalconでのvoltエンジンで配列判定ってどうやってやるのかなぁと色々調べたが,なかなかやろうとしていることが実現できるものにたどり着けなかったのでメモ

一覧

ビルトイン 説明
defined 変数が定義されているかどうかをチェック
empty 変数が空かどうかチェック
even 変数が数字の偶数かどうかをチェック
odd 変数が数字の奇数かどうかをチェック
numeric 変数が数字かどうかをチェック
scalar 変数がスカラー(配列やオブジェクト以外)かどうかをチェック
iterable イテレータかどうかをチェック
divisibleby 指定した数字で割り切れるかどうかをチェック
sameas 変数がもうひとつの変数と同じかどうか(型のチェック含む)をチェック
type 変数が指定された型かどうかをチェック

define

  • 変数が定義されているかどうかをチェック。
    • phpでいうisset
  • 定義されて入ればtrueを返す。

例(true)

#hogeが定義されている
{% set hoge = "hoge" %}
{% if hoge is defined %}
  {{ "true" }}
{% else %}
  {{ "false" }}
{% endif %}

例(false)

#hogeを定義していない
{% if hoge is defined %}
  {{ "true" }}
{% else %}
  {{ "false" }}
{% endif %}

empty

  • 変数が空かどうかチェック。
    • phpでいうempty
  • 変数の中身が空(未定義, 空文字, NULL, 0)の場合、trueを返す

例(true)

#hogeの中身が空文字
{% set hoge = "" %}
{% if hoge is empty %}
  {{ "true" }}
{% else %}
  {{ "false" }}
{% endif %}

例(false)

#hogeの中身に文字が入ってる
{% set hoge = "hogehoge" %}
{% if hoge is empty %}
  {{ "true" }}
{% else %}
  {{ "false" }}
{% endif %}

even

  • 変数が数字の偶数かどうかをチェック。
  • 偶数ならtrueを返す。
    • ※0もtrue

例(true)

#hogeの中身が偶数
{% set hoge = 2 %}
{% if hoge is even %}
  {{ "true" }}
{% else %}
  {{ "false" }}
{% endif %}

例(false)

#hogeの中身が奇数
{% set hoge = 1 %}
{% if hoge is even %}
  {{ "true" }}
{% else %}
  {{ "false" }}
{% endif %}

odd

  • 変数が数字の奇数かどうかをチェック。
  • 奇数ならtrueを返す。
    • ※0はfalse

例(true)

#hogeの中身が奇数
{% set hoge = 1 %}
{% if hoge is odd %}
  {{ "true" }}
{% else %}
  {{ "false" }}
{% endif %}

例(false)

#hogeの中身が偶数
{% set hoge = 2 %}
{% if hoge is odd %}
  {{ "true" }}
{% else %}
  {{ "false" }}
{% endif %}

numeric

  • 変数が数字かどうかをチェック。
    • phpでいうis_numeric
  • 数字ならtrueを返す。
    • ※"1"とかもtrue

例(true)

#hogeの中身が数字
{% set hoge = 1 %}
{% if hoge is numeric %}
  {{ "true" }}
{% else %}
  {{ "false" }}
{% endif %}

例(false)

#hogeの中身が数字以外
{% set hoge = "hoge" %}
{% if hoge is numeric %}
  {{ "true" }}
{% else %}
  {{ "false" }}
{% endif %}

scalar

  • 変数がスカラー(配列やオブジェクト以外)かどうかをチェック。
    • phpでいうis_scalar
  • スカラーならtrue、配列やオブジェクトならfalseを返す。
    • ※スカラー: 大小を比較して順番に並べることが可能なもの。数値型、文字型など

例(true)

#hogeの中身が数値
{% set hoge = 1 %}
{% if hoge is scalar %}
  {{ "true" }}
{% else %}
  {{ "false" }}
{% endif %}

例(false)

#hogeの中身が配列
{% set hoge = ["hoge"] %}
{% if hoge is scalar %}
  {{ "true" }}
{% else %}
  {{ "false" }}
{% endif %}

iterable

  • イテレータかどうかをチェック。
    • ※ループで使用することができる変数かどうかのチェックになります。
    • phpでいうis_array
  • 配列ならtureを返す。
    • ※配列やそれに類似するデータ構造のもの

例(true)

#hogeの中身が配列
{% set hoge = ["hoge", "fuga"] %}
{% if hoge is iterable %}
  {{ "true" }}
{% else %}
  {{ "false" }}
{% endif %}

例(false)

#hogeの中身が文字列
{% set hoge = "hoge" %}
{% if hoge is iterable %}
  {{ "true" }}
{% else %}
  {{ "false" }}
{% endif %}

divisibleby

  • 指定した数字で割り切れるかどうかをチェック。
  • 割り切れればtrueを返す。

例(true)

#hogeの中身の値が指定した数値で割り切れる
{% set hoge = 2 %}
{% if hoge is divisibleby(2) %}
  {{ "true" }}
{% else %}
  {{ "false" }}
{% endif %}

例(false)

#hogeの中身の値が指定した数値で割り切れない
{% set hoge = "hoge" %}
{% if hoge is divisibleby(3) %}
  {{ "true" }}
{% else %}
  {{ "false" }}
{% endif %}

sameas

  • 変数がもうひとつの変数(直接指定もOK)と同じかどうか(型のチェック含む)をチェックする
  • 変数の中身が型を含めて同じならtrue

例(true)

#hogeとfugaが型を含め同じ中身
{% set hoge = 2 %}
{% set fuga = 2 %}
#直接指定する場合はsameas(2)
{% if hoge is sameas(fuga) %}
  {{ "true" }}
{% else %}
  {{ "false" }}
{% endif %}

例(false)

#hogeとfugaの中身が違う
{% set hoge = 2 %}
{% set fuga = "2" %}
#直接指定する場合はsameas("2")
{% if hoge is sameas(fuga) %}
  {{ "true" }}
{% else %}
  {{ "false" }}
{% endif %}

type

  • 変数が指定された型かどうかをチェック。
  • 指定した型と一致すればtrue

例(true)

#hogeの中身の型が指定した型と一致
{% set hoge = 2 %}
{% if hoge is type('int') %}
  {{ "true" }}
{% else %}
  {{ "false" }}
{% endif %}

例(false)

#hogeの中身の型が指定した型と一致しない
{% set hoge = 2 %}
{% if hoge is type('string') %}
  {{ "true" }}
{% else %}
  {{ "false" }}
{% endif %}

参考資料

phalconのview(voltエンジン) vol2

↑めちゃくちゃわかりやすかったです

おわり

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1