14
25

More than 3 years have passed since last update.

PHPがよくわからない時に助けになりたいリンク集

Last updated at Posted at 2018-12-12

規約

コメントアウト

// 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を処理する...
}

結合したい

$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でテストしたい

困った!

NG : $reflection = new ReflectionClass(テスト対象クラス);
OK : $reflection = new \ReflectionClass(テスト対象クラス);

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.

困った!

PECLを使いたい

IDEを使いたい

困った!

これなんだ?

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

__()

手続き型ヘルパー
__($string, $params = array())
The __ 関数は、Lang::get の別名です。
Lang - クラス - FuelPHP ドキュメント

14
25
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
14
25