読者です 読者をやめる 読者になる 読者になる

MasKのpermission denied.

新卒2年目WEBエンジニアの僕がぶつかった技術的な問題や発見のメモ

PHP

Laravel5で'Class 'TCPDF' not found'

タイトル通り普通に開発してたら'Class 'TCPDF' not found'って出て、なんぞ?ってなった。そもそもTCPDFとは? TCPDFに関するリファレンス・ドキュメント TCPDFは、PHP用のライブラリで、PDFファイルを動的に作成するためのライブラリ(クラス)です。 ほう、…

staticで宣言したメンバ変数にアクセスする方法

PHP

#hogeクラス public function getHoge() { $brothers = ['taro', 'jiro', 'saburo']; // 処理 }みたいな書き方をしていたら、先輩に「固定値なんで、フィールドにstaticで定義した方が都度インスタンス生成しなくてよいよ」と言われたので、 #hogeクラス pri…

Laravelを新しいVMにpullしてきてartisanコマンドを叩いたらError in exception handler.

タイトル通り、新しいVMに既存のプロジェクトをpullしてきてcomposer updateとかしてたらなんかartisan周りでエラー。 エラー文言はError in exception handler.のみ。ワケ分からんと思って色々調べてたら、ドキュメントに 最初にComposerを使用し、Laravel…

checkdnsrr($address, "A")でメールバリデーションするとdocomo.ne.jpがバリデーションに引っかかってしまう件

PHP

この前【PHP】メルアドバリデーションにcheckdnsrr()を使っていたら存在するメルアドもバリデーションに引っかかってしまった話 - MasKのpermission denied.mask.hatenadiary.com っていう記事を書いたんですが、 return checkdnsrr($domain, "A"); だとdoco…

【PHP】メルアドバリデーションにcheckdnsrr()を使っていたら存在するメルアドもバリデーションに引っかかってしまった話

PHP

タイトル通りメールアドレスのバリデーションにcheckdnsrr()でそのホスト名が存在するのかをバリデーションでかけていたのですが、どうやら本当に存在するのにcheckdnsrr()がfalseを返す場合があるとユーザーから苦情が来た。PHP: checkdnsrr - Manualちなみ…

【PHP】連想配列の配列から特定の値だけ取り出す。【array_column】

PHP

連想配列の配列から特定の値だけ取り出す。book_listから全部の本のidを取得する場合、 $book_id_list = []; foreach ($book_list as $book) { $book_id_list[] = $book['id']; } こう書くしかないと思ってました。 ところがPHP5.5からarray_column()という…

【PHP】目的の日までの日数を計算する方法【日付計算】

PHP

PHPで今日から任意の日付までの日数を引き算する方法をメモ。今回のサンプルは期限の時間 $time_limit から現在の時間を引いた結果が秒で出るので、それを日数に変換しています。 $remaining_days = floor((strtotime($time_limit) - strtotime('now')) / (6…

PostgreSQLの配列をPHPの配列にしたり、PHPの配列をPostgreSQLの配列に変換したい。

タイトル通り PostgreSQLとPHPの配列を変換する関数 毎回思い出すの面倒なので、メモがてら共有 // phpの配列をpostgres用の配列に変換 private function toPostgreSqlArray($data) { return '{' . implode(',', $data) . '}'; } // postgresの配列をphpの配…

PHPでcsvファイルを読み込む方法

PHP

PHPでcsvファイルを読み込む方法 今更ながら便利だったのでメモ $file = 'path/to/file'; $fp = fopen($file, 'r'); while(($csv = fgetcsv($fp, 0, ',')) !== FALSE) { //$csvファイル一行ずつ実行 } $csv には一列ずつ左から$csv[0], $csv[1], .... みたい…

Notice: Indirect modification of overloaded property Hoge::$page has no effectという見たこと無いエラーが出た。

PHP

foreach内でオブジェクトに配列を代入しようとしたら Notice: Indirect modification of overloaded property Foo::$bar has no effect という初めて見たエラーが出たので調べてみた。どういう状況で起きたかというと、コメントリストをforeachで回してその…

implode(): Invalid arguments passed

PHP

implode(): Invalid arguments passed in ... ってエラー出てなんだろうと思ったら、引数がarrayじゃないですよってエラーだった。

PHPのisset()とempty()の違い

PHP

PHPのisset()とempty()の使い分け方が分からん。 と思って調べたら、ちゃんと明確に違うんですね笑 今まで割と適当に使ってました。下に参考URL載せたのですが、かいつまむと 種類 | isset() | !empty() false | true | false 空文字 | true | false 空配列 …

PHPの文字列一致でstrpos()を使うときに注意すべきこと

PHP

タイトルの通り、 PHPの文字列一致でstrpos()を使った んですが、罠にはまったのでメモがてら共有。この記事 PHPまとめ - 文字列操作 でPHP最速の文字列検索はstrpos()だ、というのを見て文字列一致には毎回strpos()を使っていました。しかし、 $text = 'abc…

ん? syntax error, unexpected 'list' (T_LIST), expecting identifier (T_STRING)

PHP

Laravelで普通にコーディングしてたら syntax error, unexpected 'list' (T_LIST), expecting identifier (T_STRING) ってエラーが出てきてなんやねんと思って調べたら、そもそも 'list' っていうのがPHPの予約語でconstantsやcalss名、function名、method名…

【Laravel】リレーションで別テーブルを挟む場合

Laravelのリレーションでテーブルを挟んで紐づけたい場合の書き方 タイトルの通り、リレーション(hasManyとか)でテーブルを挟んだ先のテーブルも紐づけたい時にどうすんの?ってなりました。 文章だけだと分かりづらいですが、 記事 ▶︎ コメント ▶︎ コメント…

【PHP】arrayに空文字が入っていたら削除

PHP

unsetってけっこう存在自体を忘れますよね。 $tag_array = explode(',', $tags); //空文字が入っていたら削除 if($emptiness = array_search('', $tag_array)){ unset($tag_array[$emptiness]); }

【Laravel】レコードがあったらUpdate、無ければInsertする方法

LaravelでレコードがあったらUpdate,無ければInsertする方法を思いついたのでメモ。 $member = Member::firstOrNew(['member_id' => 00001]); $member->name = '太郎'; $member->save();firstOrNew()はレコードがあれば取ってきて、無ければnewしてくれるの…

PHPで文字列の半角カナ、全角カナを変換する。

PHP

$converted_str = mb_convert_kana ( $string[, $option[, $encording]]);で変換できる。 オプションは でendcordingは省略可能です。便利な関数がありますね(KONAMI)

LaravelでJOIN ON を使う

hogeテーブルのレコードに対して、pageテーブルのレコードを削除フラグ is_deleted = 0 だったら 結合したい場合、Laravelでは $sql->leftjoin('page', function($join){ $join->on('page.hoge_id', '=', 'hoge.hoge_id') ->where('page.is_deleted', '=', 0…

新しくサーバー立てたときにお世話になった記事まとめ【さくらのクラウド】

さくらのクラウドの20000円クーポンを頂いたので使ってみた。自分でサーバー立てたりするのは初めてだったので、苦労しました。 なのでログがてらお世話になった記事を。Webサーバー構築(Apache) - CentOSで自宅サーバー構築 apacheの設定などはこのページを…

【twig】twigでvar_dump()する方法

twigを使っていて、var_dumpしたいけど、できん!ってなって調べたのでシェアtwigでvar_dumpと同じことをするには、設定ファイルを書き換える必要があります。 設定ファイルはLaravelなら/app/config/packages/rcrowe/twigbridge/config.php になります。他…

Laravelでテーブルをjoinで結合してテーブル間でカラム名が被ったときの対処法

Laravelでテーブルをjoinで結合してテーブル間でカラム名が被ったときの対処法 usersテーブル id, name, class_idclassesテーブル id, name各テーブルが上のようなカラムを持っていたとすると、 $users = DB::table(‘users') ->select(‘users.id', ‘users.na…

正規表現で特殊文字だけ取り除きたい【PHP】

諸事情で特殊記号(☆)とかが文字列に入っていたら、排除してちゃんとした文字列に直したい、ということがあって調べたので共有。 $address = '東京都☆渋谷区'; $formated_address = preg_replace("/[^ぁ-んァ-ンーa-zA-Z0-9一-龠0-9\-\r]+/u",'' ,$address)…

GoogleMapAPIから二点間の移動距離とその所要時間を計算する方法

GoogleMapAPIから二点間の移動距離とその所要時間を計算する方法 を調べたのでメモ。二点間の移動距離とその所要時間をそのまま出してくれるものが見当たらなかったので、出発地と目的地の緯度経度を求めて▶︎移動距離とその所要時間を算出するという二段階に…

Laravel4でSQLのLIKEの使い方

Laravel4のクエリービルダーでLIKE句を使おうと思って ->... ->like('name', '%あああ%') ->get(); みたいな使いかたしたけど通用しなくて、どうやって表現するんだろうかと思って調べたら ->... ->where('name', 'LIKE', '%あああ%') ->get(); でとれました…

【PHP】多重配列の並び替え

PHP

多重配列の並び替え $users[0][‘age’] = 15; $users[1][‘age’] = 14; $users[2][‘age’] = 16; $users[3][‘age’] = 11; $users[4][‘age’] = 18;このとき配列を年齢順に並べ替えたい。 $age_array = []; foreach($users as $user){ array_push($age_array, $us…

【よくわからん】simplexml_load_file()で取ってきたxmlのオブジェクトのプロパティの中身がオブジェクトになる???

PHP

simplexml_load_file()で取ってきたxmlのオブジェクトを $stations['station_name'] = $res->station_name; のように突っ込んだら$stations["station_name"]の中身が object(SimpleXMLElement)#330 (1) { [0]=> string(9) "浅草駅” } となっていました。 欲…

【API】最寄り駅を調べる方法

検索ワードからその地点の最寄り駅のデータを出す必要があり、使い方など調べたので共有検索ワードから直接最寄り駅までの距離などを調べられるAPIがあると思っていたのですが、考えが甘かったです。調べた感じ、少なくとも無料のものでそういった便利なもの…

Laravelのcacheを全削除する方法

全削除するには php artisan cache:clear で全部消えました

【Laravel】Laravelのformヘルパーでnameとvalue以外の要素を指定する方法。【フォームヘルパー】

Laravelのformヘルパーでnameとvalue以外の要素を指定する方法。 formヘルパーでclassとか、required指定したい時どうすんの?って思ったけど調べてもなかなか出てこなかったので。 ちなみに⬇️が日本語ドキュメント的なやつの記述(http://laravel4.kore1serv…

エラーメッセージへのアクセスの仕方【Laravel】

Laravelでバリデーションチェックして、エラーメッセージを取得したいというときに帰ってきた変数の中身をvar_dumpしたらobject(Illuminate\Support\MessageBag)#116 (2) { ["messages":protected]=> array(3) { ["name"]=> array(1) { [0]=> string(25) "na…

【Laravel】Laravel+twigのフォームヘルパーで苦労した話

Laravel+twigのフォームヘルパーで苦労した話 最初 {{ Form::open(‘url’ => ‘hoge’) }} でいけるだろwUnexpected token "punctuation" of value ":" ("end of print statement" expected) in "inquiry" at line 2( ´_ゝ`)ふむ{{ form_open([‘url’ => 'hogs…

【PHP】最終更新日の比較【日付計算】

PHP

一日一回だけログインポイントを付加みたいなのを作るときに、日付計算が面倒だったので次使うとき用にメモ if(strtotime(date('Y-m-d')) - strtotime(date('Y-m-d', strtotime($updated_at))) > 0){ //処理 } else { //処理 } 全体的にdate()とstrtotime()…

【Laravel】Laravelのmailでtoなどに名前がつかない

Laravelのmailでtoなどに名前がつかない Laravelでメールを送るときに、toにアドレスと名前を指定するんですが、いくら送っても名前の部分が表示されなかったので調べました⬇️がコード($data[’to_name’]や$data[‘cc_name’]、$data[‘bcc_name’]で指定した名前…

【PHP】phpクラス内定数の使い方

PHP

phpクラス内定数の使い方 前々回かなんかに php private static $hoge = 'hoge'; みたいな使い方でクラス内変数使えるみたいな記事書きましたが、変数の場合は const HOGE = 'hoge'; みたいな感じでconstを使うのが一般的らしい。 また、呼び出し方は self::…

PHPUnitでNo tests found in class ‘hoge'が出た場合

PHPUiteでNo tests found in class ‘hoge' テストコードの関数名はtestで始める必要が有るらしい。 なのでsumTest() とかではなく、testSum() といったようにしないとテストとして認識してくれないんだそうな。

【redis】redisに連想配列的な物を突っ込む方法【php】

redisに連想配列的な物を突っ込む方法 laravel的な書き方してますが、他のフレームワークでも適宜変更して使えると思います。 $redis = Redis::connection(); // 突っ込むとき $redis->set(‘hoge’, json_encode($array_hoge)); // 取り出すとき $json_hoge =…

【PHP】クラス内変数へのstatic functionからのアクセス方法

PHP

クラス内変数に対してstatic functionからアクセスする場合

PHP Warning: Creating default object from empty valueってなに?

ある日普段と変わりなくコーディングをしていたところ、 PHP Warning: Creating default object from empty value というエラーが出たので一体なんなのかと思って調べたところ、PHP5.4以降出るようになったwarningだったということでまとめました。 私は今ま…

ajaxで複数の値の渡し方

ajaxで複数の値を投げるための方法を調べたのでメモ。 $.ajax({ type: "POST", url: url, data: {name: name, id: id }, success: function(data){ //処理 }); という感じで渡すことで渡し先でPHPなら $_POST['id'], $_POST['name'] で受け取れます。

PHPの配列で&を使うとポインタ的な使い方が出来る?【参照渡し】

foreach分で配列の中身を書き換えようとしたら全く書き変わらなくて困ったのでメモ $ score = array(70,80,90); foreach($score as $value){ $value = $value * 0.9; } var_dump($score); この結果がarray(3) { [0]=> int(70) [1]=> int(80) [2]=> int(90) }…

CodeIgniterでuser/(id)的なURLを生成する方法

各ユーザー毎のページを生成したいときは appication/config/route.php 内に $route['user/(:any)'] ="user/id/$1"; みたいな感じで記述することで、 application/controllers/user.phpの public function id($value)にアクセスすることが出来るようになりま…

【PHP】文字列連結のよくわからない挙動

C/C++出身な僕からすると、PHPやJavaScriptはかなり文字列操作が便利だなーと常々思っています。 ところで、PHPの文字列連結といえば . ですよね。こいつに関してよくわからない挙動をしていたのでメモ代わりに $i = 4; $j = 5; echo $i + $j; 出力結果➡9 OK…

【MySQL】MySQLが日本語文字化けしてしまう問題【Sequel Pro】

MySQLで日本語が文字化けしてしまう問題があって、ネットで調べたけどよくわからなかったのだけれど、普段僕が使っているMySQL接続ツールSequel Pro(無料)の設定弄ったら動いたのでメモ。 とりあえず、各テーブルの文字化けしてしまうカラムのエンコーディ…

【PHP】strtotimeの使い方を勘違いしていた件

strtotimeの挙動がうまく行かないと思っていたら、なんか勘違いしていたようなのでメモ $timePoint = date('Y-m'); $nextMonth = date($timePoint, strtotime('+1 month')); みたいな感じで1ヶ月後の日付を取得できるのかと思って試行錯誤していたのだけれど…