PHP関連のことを調べてみた2020年03月31日

PHP関連のことを調べてみた2020年03月31日

PHP学習記 #2日目

#empty関数とisset関数の違い
empty関数は変数または配列がnullのときはTrue(空)を返す。isset関数は変数がnullのときはFalseを返す。要するに配列の要素にNULLが存在するかを調べるときはisset関数、空の要素が存在するかを調べるときはempty関数を利用する。

#Web APIとは
APIとは「Application Programming Interface」の略であり、アプリケーション同士を繋ぐものを指している。よって、Web APIとはHTTP通信方式によってネットワークから呼び出すAPIである。

#namespaceとは
namaspeceは名前空間であり、通常同じファイルに同じクラスや関数名、定数名は存在することが出来ないが、名前空間によって関連するクラスや、インターフェース、関数、定数などをグループ化することができる。そのため、名前空間を指定しておくことで、作成したクラスが、他のクラスの関数などと名前が衝突することを防ぐことができる。

元記事を表示

CakePHP3で別々のデータベースのテーブルをjoinする方法

## app.phpに接続情報を明記

2つの「datebase_aのcommentsテーブル」と「datebase_bのusersテーブル」が存在するとします。(usersテーブルとcommentsテーブルを別のデータベースで管理するのはあくまで例です)
1つのusersに複数のcommentsが紐づきます。

config/app.phpに接続情報を明記しましょう。

“`php:app.php
‘Datasources’ => [
‘default’ => [
‘className’ => ‘Cake\Database\Connection’,
‘driver’ => ‘Cake\Database\Driver\Mysql’,
‘persistent’ => false,
‘host’ => ‘localhost’,
‘username’ => ‘user_a’,
‘password’ => ‘password’,
‘database’ => ‘databa

元記事を表示

CakePHP3で複数でデータベースに接続する方法

config/app.phpに接続情報を明記しましょう。

“`php:app.php
‘Datasources’ => [
‘default’ => [
‘className’ => ‘Cake\Database\Connection’,
‘driver’ => ‘Cake\Database\Driver\Mysql’,
‘persistent’ => false,
‘host’ => ‘localhost’,
‘username’ => ‘user_a’,
‘password’ => ‘password’,
‘database’ => ‘database_a’,
‘encoding’ => ‘utf8’,
‘timezone’ => ‘UTC’,
‘cacheMetadata’ => true,
‘log’ => false,
],
‘database_b’ => [

元記事を表示

LaravelでjQueryを使ってAjax通信する時のURLの書き方は注意!

こんにちは、Web初心者のはるまきです。Qiita初投稿!

LaravelでJavaScriptを記述する時のパスの書き方には少し注意が必要だなと思ったので、メモしておきます。単純な話ですけど:sunny:

ルーターに合わせてパスを書こう!

初心者あるあるだとは思うんですが、「お手本通りやってもうごかな〜い!」。私の場合はjQueryのAjax通信が、それでした。お手本のコードはこんな感じでした。

“`javascript:hoge.js
$.ajax({
type: “GET”,
url: “some.php”, 他にも[../aaa/bbb/ccc.php]とか
}).done(function( msg ) {
alert( “データ保存: ” + msg );
});
“`

htmlでスタイルシートやjsを読み込む時のパスは、「aaa/bbb/ccc.js」のような書き方ですよね。でもphpファイルを読み込む時(?)はどうやら違うようでした。web.phpファイルにあるルートのまま記述すれば、きちんと動きました。jsファイルとルーター

元記事を表示

【Laravel】リレーションがある場合のファクトリによるテストデータの生成

ファクトリでリレーションがあるモデルのテストデータを生成するパターンをメモしています。
[公式リファレンス(データベースのテスト)](https://readouble.com/laravel/5.8/ja/database-testing.html?header=%25E3%2582%25A4%25E3%2583%25B3%25E3%2583%2588%25E3%2583%25AD%25E3%2583%2580%25E3%2582%25AF%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%25B3)
###親子関係
User(親)->Movie(子)のように、二つのテーブル間の親子関係なら公式リファレンスにある方法で簡単にテストデータを生成できます。each()とモデルのリレーションメソッドを利用します。

“`php
factory(App\Models\User::class)
->create()
->each(function ($user) {
$user->movies()->save(factory(A

元記事を表示

[PHP]paizaスキルチェック用標準入力取得方法のメモ

##はじめに
paizaのスキルチェックをしている際に複数の標準入力の取得方法が複数あったのでメモとして残します。

##入力値取得方法まとめ

入力値は一律で下記に指定する通りとする

“`
1 23 4

“`

###1.`fgets`メソッド

“`php
$input = fgets(STDIN);
//fgets()はファイルポインタを指定することで文字列を返します。
//STDINを指定することで標準入力を返すようになります。(STDIN:standard inputの略)
var_dump($input);
<<--出力内容-->>
string(7) “1 23 4

“`
`var_dump()`で`fgets()`の返り値を確認してわかる通り、最後の改行も一緒に取得してしまっていることがわかります。

###2.`trim`メソッド

“`php
$input = trim(fgets(STDIN));
//trim()は引数のホワイトスペースを取り除くことができます。
var_dump($input);
<<--出力内容-->>
string(6)

元記事を表示

Custom Field Suite のループで配列の最初の要素を取得する

WordPressのプラグイン Custom Field Suite のループで、最初の要素を取得したい時のコードです。

“`
get(‘loop’);
$loop_item = $loop[0][‘loop_item’];
echo $loop_item ;
?>
“`

#参考URL
[Custom Field Suite でループ項目のn番目の画像があるかどうかでの条件分岐での不具合について](https://ja.wordpress.org/support/topic/custom-field-suite-%E3%81%A7%E3%83%AB%E3%83%BC%E3%83%97%E9%A0%85%E7%9B%AE%E3%81%AEn%E7%95%AA%E7%9B%AE%E3%81%AE%E7%94%BB%E5%83%8F%E3%81%8C%E3%81%82%E3%82%8B%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B%E3%81%A7/)

元記事を表示

[初心者向け] laravel ルーティング

#ルーティング
アクセスしたアドレスを元に処理を割り振ること。

phpのときはwebappっていうフォルダの中にhello.phpファイルを用意すれば、**http:〇〇_webapp/hello.php**でアクセスできましたが、
laravelでは特定のアドレスにアクセスすると、**そのアドレスに割り当てられたプログラム**が実行されます。
このように「〇〇というアドレスにアクセスしたら、✖️✖️という処理を呼び出す」
という関連付けを行っている機能。

routesフォルダにあるweb.phpを開きます。

“`php:web.php

元記事を表示

【初心者向け】PHPマスター講座 vol.3(代数演算子を学ぼう)

みなさんこんにちは!けいです

今回は「代数演算子」について解説します!!

#【PHPマスター講座】演算子とは

===========================

▶︎演算子(えんざんし)とは何か??

>ひとつ以上の値 (あるいはプログラミング用語における「式」) から別の値 (制御構造が式になるように) を生み出すもの(引用先:PHPマニュアル)

見てもらうとわかるように…

マニュアルは「これでもか!」ってくらい
簡単な内容を複雑に書く天才なので

今回は演算子の中でも
初心者が一番初めに学んでおくべき

【代数演算子】について
一つずつ丁寧に解説していきます!

———————————

###▶︎【代数演算子の「6つの種類」】?
・「+」:「足し算」
・「-」:「引き算」
・「*」:「掛け算」
・「/」:「割り算」
・「%」:「剰余算」
・「***」:「累乗」

———————————

代数演算子って言葉は難しそうですが
基本的には上記「6つの種類」しかありません!

なんだ

元記事を表示

【phpbb】javascriptファイルをテンプレートごとに読み込む

##javascriptファイルを特定のテンプレートで読み込みたい#
phpbb3.2.5を使用しています。
ソースを見ると``の直前でjqueryが読み込まれています。
該当ファイルは`./styles/prosilver/template/overall_footer.html`です。
このファイルは基本的にすべてのページのフッター部分で使われています。

で、そのファイルの下の方に`{$SCRIPTS}`という記述があります。

“`./styles/prosilver/template/overall_footer.html


{$SCRIPTS}



“`

テンプレートごとにjavascriptファイルを読み込む場合にここで表示されます。

元記事を表示

Laravel6 Eloquent で複数代入を使用したupdate()の書き方と注意点

初投稿です。
なんか公式のドキュメントに書いていない気がするので書きました。
バージョンはLaravel6で確認してまいすが、5.1~7.*は多分同じ。

# 複数代入とは
こうじゃなくて。

“`
$flight = App\Flight::find(1);
$flight->name = ‘New Flight Name’;
$flight->hoge = ‘New Flight Hoge’;
$flight->save();
“`
こうするやつ。

“`
App\Flight::find(1)->update([
‘name’ => ‘New Flight Name’,
‘hoge’ => ‘New Flight Hoge’,
]);
“`
`update()`を使います。
[$fillableか$guarded](https://readouble.com/laravel/6.x/ja/eloquent.html#mass-assignment)をModelに定義していないとエラーになります。
更新したくない値がリクエストに含まれていても、とりあえずは安

元記事を表示

qiitaの限定公開一覧をわかりやすく

qiitaの限定公開一覧がページネーションされてしまっていてタイトルを探しづらいので、
qiitaのAPIを利用して超簡易的に自分用に一覧を作りました。
{APIトークン} と {自分のユーザ名} の部分だけは書き換えてください。

“`php
{“tags”} as $t){
$tags[] = “[“.$t->{“name”}.”]”;
}
?>


“`

これ

元記事を表示

VSCode+docker-compose+php(xdebug)の環境構築のポイント

# はじめに
ありふれた記事なのではあるが一発では起動できない。。
なので基本的なところは他の記事に譲るとして、必ずデバッグする為のポイントを上げてみた。

## 1. VSCodeにPHPDebugをインストール
インストール後にF5などで`RUN and Debug`を起動してlaunch.jsonを適当に作る。

“`json:launch.json
{
“port”: 19000,
“pathMappings”: {
“/var/www/workspace/php_loach”:”/Users/xxx/workspace/project/php_loach”
}
}
“`
注)他にも必要な項目はあるが、わかりやすく、`port`と`pathMappings`だけ取り上げた。他の記事で確認してほしい。
portはxdebugで指定するportと合わせる。webでアクセスするportとは違う。
pathMappingsのディレクトリは、projectのドキュメントルートを指定。dockerとローカルは同じディレクトリを指定。

## 2.

元記事を表示

eval(\psy\sh())がローカルちゃんと動かないとき

phpbrewでreadlineつきでphpインストール

“`
phpbrew install php-7.2.28 +default +readline +dbs +fpm
“`

元記事を表示

常に動くLINEBOTにお引っ越し(レンタルサーバ+PHP編)

#今回のモチベーション
前回、[こちら](https://qiita.com/n0bisuke/items/ceaa09ef8898bee8369d)の記事を参考にWikipedia APIを使った、調べものLINE botを作った。

前回の記事
https://qiita.com/shima-07/items/2322598ca5a40cfee47b

だが、

– ngrokを立ち上げている時しか使えないから普段使えない。
– いざ、ngrokを立ち上げるとアドレスが変わってしまうため、Messaging API settingsのwebhook URLを毎度変えないと動かない。

うーん。。。
##### ngrok立ち上げるのめんどくさい! 常に使えるようにしないと意味ないじゃん!
と思ったわけです。だから『常に動くようにしよう!』が今回の動機です。

# 今回やったこと
– 1. まずは [now](https://zeit.co/download) を試してみた
– 2. さくらのレンタルサーバでやることにした
– 3. jsで書いていたものをPHPに書き直した

最終的

元記事を表示

XAMPPのphpmyadminにアクセスした時、HY000/2002が出てアクセス拒否された場合の対処

# 起こったこと
xmappでApacheとMySQLを起動してさてphpmyadmin/index.htmlにアクセスすると
以下みたいなエラーが出てログイン画面すら出ない状態になっていました。
今回行った対応を順に書いていきます。
※この記事ではrootユーザでのログインを行っているが実際の運用ではrootユーザではなく別のユーザを別途定義した方が無難。

![えらー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563268/136443c9-67de-f221-7b1b-9ba64b6cd9d4.png)

# ログイン画面を出す

デフォルトでxmappをインストールした場合、C:\xampp\phpMyAdmin\配下にconfig.inc.phpが置いてあります。
今回はその中の一部を編集する。config.inc.phpを開き、以下の項目があることを確認してください。
何も編集していない状態であればおそらく下記のような状態になっているかと思われます。(これとは違う場合もあるかもしれない)

元記事を表示

PHP 郵便番号と住所を検索 正規表現

#郵便番号か住所で検索

![コメント 2020-03-28 222803.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/560686/82cc8efc-5e16-3906-a9c4-f3534ddb6cb4.png)

##内容

郵便番号または都道府県を選択し市町村を入力すると
郵便のデータが検索できます。

10件を超えた場合に”前へ”、”次へ”を押すと各々のページに飛ぶようになっています。

SQL脆弱性があると思いますが、今のところこのまま学習を進めていきます。

“`php
// 変数を設定
$post_num =”;//郵便番号
$area =”;//都道府県選択
$city =”;//市町村
$town =”;//県域
$error1 = [];//エラー文
$error2 = [];//エラー文
$user_data = [];
$abc_data = [];
$query = ”;
$host = ‘localhost’;
$username = ”;
$passw

元記事を表示

実行された全てのSQLクエリをログに出力するLaravelプラグイン

Laravelで新しいプロジェクトを作るたびに毎回似たようなコードを書いている気がしてきたので、プラグインにして公開しました。

https://github.com/ngmy/laravel-query-log-tracker

![Demo](https://ngmy.github.io/laravel-query-log-tracker/demo.gif)

PHP 7.2〜7.4、Laravel 5.6以上、6.x、7.xで動作するはずです。
PHP 7.2〜7.4とLaravel 7.xでユニットテストしています。
PHP 7.3.16とLaravel 7.3.0で実際に動作確認しました。

ログには次の項目が出力されます。

* バインド後のSQL
* バインド変数
* 実行時間(ミリ秒)
* コネクション名

インストール方法はREADMEに書いていますが、Composerでインストールして、(パッケージディスカバリーを使っていない場合は)サービスプロバイダとファサードを`config/app.php`に追加するだけです。

実行時にログを無効化することもできます。

`

元記事を表示

PHP+αでTodoアプリを作る話①

#前回
前回は**Apatch**と**Nginx**を使ってサーバーを構築する記事を書きました。そちらをまだご覧になっていない方はそちらもご覧ください。

#はじめに
以前、筆者はPHPでウェブサイトを作成する記事を作成しました。後で振り返ってみると内容に多くの不備があることに気づきました。(書いていた当時もちょっと無茶かなとは薄々感じていましたが笑)

筆者自身がしっかりとPHPを使いこなせるようにしたいと思ったこと、また、特に何をすべきかわかりにくいPHPを使う初心者の方のお役に立ちたいというのが今回記事を書こうと思った理由です。

長話はさておきさっそく記事を執筆していきたいと思います。

#参考文献
**改訂新版 ゼロからわかるPHP超入門**
https://www.amazon.co.jp/%E6%94%B9%E8%A8%82%E6%96%B0%E7%89%88-%E3%82%BC%E3%83%AD%E3%81%8B%E3%82%89%E3%82%8F%E3%81%8B%E3%82%8BPHP%E8%B6%85%E5%85%A5%E9%96%80-%E6%98%9F%E9

元記事を表示

PHP学習記 #1日目

#queryメソッド
一度だけ使用するSQL文をデータベースへ送信する

#nl2br関数
改行コードをHTMLのbr要素に置換して表示してくれる関数

#disabled属性(HTML)
フォームを入力できないようにする。内容を確認することを目的とする。

#unset関数
一度作成した変数や配列から特定の要素を削除する関数。複数の値の削除も一度に処理することができる。

元記事を表示

OTHERカテゴリの最新記事