規約
コメントアウト
// PHPの1行コメントアウト
/**
* PHPの複数行コメントアウト
*/
{{-- Bladeのコメントアウト:このコメントはレンダー後のHTMLには現れない --}}
インストール
WordPressを使いたい
WordPressが初めてでさっぱりわからないときに見たいリンク集 - Qiita
php.ini
はどこ?
# Webサーバが訳あって起動しないのでphpinfo();ができない場合
$ php --ini | grep php.ini
Configuration File (php.ini) Path: /etc
配列を使いたい
ターミナル上で実行したい
$ php -a
Interactive shell
php > $obj = new stdClass();
php > var_dump($obj);
object(stdClass)#1 (0) {
}
php >
文字列
文字が数字であるかどうかを調べる
ctype_digit(string $text) : bool
/** 利用イメージ. */
$moji = '2';
if(!is_null($moji) && ctype_digit($moji)) {
// 文字が数字だったら数値型へ変換.
$suji = intval($moji);
// $sujiを処理する...
}
- 複数文字列の置換 - Qiita
- 特定の文字列を含むかのチェック - Qiita
- strpos — 文字列内の部分文字列が最初に現れる場所を見つける(高速でメモリ消費も少ない )
- strstr — 文字列が最初に現れる位置を見つける(大文字小文字を区別する)
- ctype_digit — 数字かどうかを調べる
結合したい
$str1 = 'ponsuke';
$str2 = 'tarou';
// echoするだけなら連結しないでよくて超はやい
echo $str1, $str2
// 文字列内で結合 : 結合演算子より早い
$ketsugou = "{$str1}{$str2}"
// 結合演算子
$ketsugou = $str1 . $str2;
// 結合代入演算子
$ketsugou = $str1;
$ketsugou .= $str2;
比較したい
比較したい
// 緩やかな比較「==」: str1=1; str2='1str';だと同じ で str1='1STR'; str2='1str';だと違う
// switch/caseはこの緩やかな比較をつかう
str1 == str2;
// 大文字小文字区別なし「strcasecmp」: str1=(string)1; str2='1str';だと違う で str1='1STR'; str2='1str';だと同じ
strcasecmp(str1, str2);
// ちゃんと「strcmp」: str1=(string)1; str2='1str';だと違う で str1='1STR'; str2='1str';だと違う
strcmp(str1, str2);
// 厳密な比較「===」: str1=1; str2='1str';だと違う で str1='1STR'; str2='1str';だと違う
str1 === str2;
文字を"
と'
で囲ったときの違い
$hensu = 1;
// ダブルクォーテーション : 変数を変数値に置換する
var_dump("$hensu"); // 出力: PHP Notice: Undefined variable: hensu in ....
var_dump("{$hensu}"); // 出力: 1
// シングルクォーテーション : 数を変数値に置換しない(処理が速い)
var_dump('$hensu'); // 出力: $hensu
isNullOrEmpty()的な
1. is_null($str) || $str == ''
2. strlen($val) == 0
// スペースも許容したくない場合
3. strlen(trim($str)) == 0
// 「0」も「"0"」も「FALSE」も「空の配列」も許容したくない場合
4. is_null($str) || empty($str)
引数
// 値渡し
function method($arg) {}
// 参照渡し
function method(&$arg) {}
// デフォルト引数値
function method($arg = 'pon') {}
// デフォルト引数値 && Null許容(引数を指定しなくてもエラーにならない)
function method($arg = null) {}
// 型宣言
function method(array $arg) {}
// 型宣言 && Null許容(引数にnullでもいいから指定しないとType error: Too few arguments to functionでエラーになる)
function method(?array $arg) {}
/* おまけ */
// Null許容の返り血(PHP7.1以降)
function method(?array $arg): ?array {}
関数にNULLを渡したらどうなるか知りたい
// TypeError: trim() expects parameter 1 to be string, null given in xxx
$trimed = trim(null);
// TypeError : array_search() expects parameter 2 to be array, null given
$key = array_search('hoge', null);
// Type error: substr() expects parameter 1 to be string, null given
$parts = substr(null, 0, 6);
// ErrorException : count(): Parameter must be an array or an object that implements Countable
$count = count(null);
// ArgumentCountError : Too few arguments to function
foreach (null as $key => $value) {}
/** エラーにはならない系 **/
$a = strval(null); // $a = ""
GetterとSetter
型変換したい
# intにしたい
$i = (int)$a;
$i = (int)null; // $i = 0
$i = intval($a);
$i = intval(null); // $i = 0
# stringにしたい
$s = (string)$i;
$s = strval($i);
PHPUnitでテストしたい
- HomebrewでPHPUnitをインストールする方法 - Qiita
- MacのPhpStormでLaravelプロジェクトでPHPUnitをできるようにする記録 - ponsuke_tarou’s blog
- PHPUnitを使えるようにする。 - Qiita
- protected,privateのメソッド、プロパティのテスト - Qiita
- アサーション — PHPUnit latest Manual
- 引数が参照渡しの関数をテストする方法 - takafumi blog
- PECLでXdebugをインストールする方法 - Qiita
困った!
- Maximum function nesting level of 'xxx' reached, aborting! - Qiita
-
'PHPUnit_Framework_TestCase' not found
-
Error : Class 'xxxxx\ReflectionClass not found'
NG : $reflection = new ReflectionClass(テスト対象クラス);
OK : $reflection = new \ReflectionClass(テスト対象クラス);
-
ReflectionException: Class config does not exist
-
This test did not perform any assertions
Laravelを使いたい
Composerを使いたい
# インストール済みのパッケージ一覧
$ composer show
cache/adapter-common 1.0.0 Common classes for PSR-6 ada...
cache/apcu-adapter 1.0.0 A PSR-6 cache implementation...
...
# composer.json のクラスマップand名前空間の割り当てマップの変更を autoloader.php に反映させる
$ composer dump-autoload
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover
Discovered Package: fideloper/proxy
Discovered Package: hisorange/browser-detect
Discovered Package: laravel/tinker
Discovered Package: laravelcollective/html
Discovered Package: maatwebsite/excel
Discovered Package: yajra/laravel-oci8
Discovered Package: ytake/laravel-aspect
Package manifest generated successfully.
困った!
- No application encryption key has been specified. - Qiita
- Apacheを使ってLaravelのページを表示できない時の対応方法 - Qiita
- PHP Warning: require(/path/to/vendor/composer/../symfony/polyfill-mbstring/bootstrap.php): failed to open stream: No such file or directory in /path/to/vendor/composer/autoload_real.php on line 66 - Qiita
- Composerが反応しない - Qiita
- 認証のあるプロキシ環境下でComposer installがうまく行かない - Qiita
- Dotenv values containing spaces must be surrounded by quotes. - Qiita
- Xdebug could not open the remote debug file '\tmp\xdebug.txt' - Qiita
- Please provide a valid cache path - Qiita
- キャッシュクリアできず.envを反映できない時の対応方法 - Qiita
PECLを使いたい
IDEを使いたい
困った!
- PHP Fatal error: Class 'hoge' not found in fuga.php on line xx - Qiita
- PHP Warning: PHP Startup: Unable to load dynamic library 'oci8_12c' - Qiita
これなんだ?
stdClass
PHP標準クラスでプロパティもメソッドも何もないクラスだが、インスタンスを生成すると存在しないプロパティに好きにアクセスできる。
stdClass is the default PHP object. stdClass has no properties, methods or parent. It does not support magic methods, and implements no interfaces.
When you cast a scalar or array as Object, you get an instance of stdClass. You can use stdClass whenever you need a generic object instance.
PHP: クラスの基礎 - Manual
- stdClass - Qiita
- PHP: 定義済のクラス - Manual
- stdClassのオブジェクトを作る方法 - Qiita
- stdClassをnewしたらPHP Warning: Creating default object from empty value inとなったときの対応方法 - Qiita
__()
手続き型ヘルパー
__($string, $params = array())
The __ 関数は、Lang::get の別名です。
Lang - クラス - FuelPHP ドキュメント