code: public function encodeValue($var)
      {
          if ($var === null) {
              return "null";
          }
          if ($var === true) {
              return "true";
          }
          if ($var === false) {
              return "false";
          }
          if (is_float($var)) {
              return $this->encodeFloat($var);
          }
          if (is_integer($var)) {
              return strval($var);
          }
          if (is_string($var)) {
              return is_numeric($var) ? $this->encodeNumeric($var) : $this->encodeString($var);
          }
          if (is_array($var)) {
              return $this->checkKeySequence($var) ? $this->encodeArray($var) : $this->encodeObject($var);
          }
          if (is_object($var)) {
              $arr = (array) $var;
              return $this->encodeValue($arr);
          }
          
          return $this->encodeValue(Values::stringValue($var));
      }
docs: encode() の本体の処理です.
  指定された値がスカラー型 (null, 真偽値, 数値, 文字列), 配列, オブジェクトのいずれかにも該当しない場合,
  文字列にキャストした結果をエンコードします.
  
  @param  mixed  $var 変換対象の値
  @return string      JSON 文字列
  @ignore