PHP関連のことを調べてみた2022年02月11日

PHP関連のことを調べてみた2022年02月11日

[wordpress]function.phpで正規表現を使って特定のディレクトリ以下へのアクセスをリダイレクト

WordPressで作っているサイトでリダイレクトをかけたい場合、.htaccessで行うことが多いかと思います。多いかと思います、と言いつつ私は今回初めて実装したのですが、数時間の格闘の上、stgでの実装に成功!
しめしめ…と本番反映しようとしたところ、なぜかstgでは効いた.htaccessが本番で機能しない。こんなことがあっていいのか、否、よくない。

*WordPressでの.htaccessで参考にしたのはこちらの記事。この記事は何も悪くないです。
[WordPressで.htaccessリダイレクトができない場合【解決】](https://wp-customize.net/wordpress/7626.html)

しかし急いでいたこともあり、ひとまず.htaccessの検証は後回しにしてWordPressのfunction.phpでリダイレクトを実装することに。まあこちらも不慣れなもんでしてね。数時間の格闘の上、やっと実装に成功したってもんです。

特に正規表現!!難しいですねー備忘録を残しておきましょう。

やりたいこと:
– URI /blog/以下のページを302

元記事を表示

PHPの配列操作(一部)

#PHPの配列
使用の際は公式で調べたほうが無難です

##配列作成
“`php
//配列宣言
$配列名 = array(‘値1’, ‘値2’, ‘値3’);
$配列名 = [‘値1’, ‘値2’, ‘値3’];
“`
“`php
//連想配列
$配列名 = array(“キー1” => “値1”, “キー2” => “値2”);
$配列名 = [“キー1” => “値1”, “キー2” => “値2”];
“`

##配列関連の関数

###配列の結合
“`php
新しい配列 = array_merge (配列1, 配列2,・・・);

$arr1 = array(‘A’,’B’);
$arr2 = array(‘C’,’D’);

$arr3 = array_merge($arr1, $arr2);
“`

###配列要素を区切り文字で連結し文字列にする
“`php
文字列 = implode(区切り文字, 配列)
// 配列の要素と要素を区切り文字を挟んで連結する
// 1つの文字列にして返す。
// 区切り文字は省略可
$arr = array(‘AAA’, ‘B

元記事を表示

カレーを作りながらPHPオブジェクト指向プログラミングを学ぼう!!!

今回はphpの復習を兼ねてオブジェクト指向についてまとめたいと思います。また、直感的に理解しやすいように「カレーを作る」ということをテーマに進めて行きたいと思います。

#オブジェクト指向の3大要素
###1.クラス
クラスには「まとめる」「隠す」「たくさん作る」という3つの特徴がある。
######1-1.「まとめる」とは
クラスには「プロパティ」や「関数」を含むことができる。カレーで例えると、「プロパティ」はカレーの具材であり、「関数」はそれらの具材を調理するといったところでしょうか。

“`php:カレークラス
class Curry{
public $carrot
public $potatoes
public $onion
public $meet

function cooking($carrot,$potatoes,$onion,$meet){
echo “カレーの完成!具材は” . $carrot .$potatoes .$onion .$meet .”です。”
}
}
“`

“`php:実行クラス
//Curryインスタンス

元記事を表示

PHP_CodeSnifferで最強のPHPのコード整形を手に入れる

## TL;DR
– PHPで書かれたコードのコーディング規約にPSR-12を適用して開発してるよ!
– エディタの整形ルールの設定が漏れてて、気づいたら全然触ってないところまで整形されてdiffが読みづれえ…
– コード整形のルールをレポジトリ内に入れてPHP_CodeSnifferのコマンドで一発で整形できるようにした!
– IDE(PhpStorm)からもPHP_CodeSnifferを使うようにした

## PHP_CodeSnifferとは?
PHP_CodeSnifferとは、コーディング規約(PSR-12など)に沿った構文チェックを行ったり、違反があったら自動で修正することが出来る静的解析ツールのことです。

[squizlabs/php_codesniffer](https://packagist.org/packages/squizlabs/php_codesniffer)

composerでPHP_CodeSnifferを入れると、`phpcs`と`phpcbf`というコマンドが使えるようになるので、これらを使って違反をチェックしたり整形をします。

## イ

元記事を表示

【PHP】小ネタ

#コード
“`PHP

元記事を表示

PHP beginTransaction 整合性 ACID特性

“`index.php

~~~~~~~~
//Update構文にて、お金の受け渡しを想定したケース

try{
$cone->beginTransaction;

$psn->execute([
:name => $A_user, //佐藤さん(剛田さんへお金渡す人)
:money => -1 * $money //-2000円の値が入ってます。
]);

$psn->execute ([
:name => $B_user, //剛田さん(佐藤さんからお金受け取る人)
:money => $money //2000円の値が入っています。
]);

$cone->commit();
}catch(PDOExcetion $e){

echo $e->getMessage();
$cone->rollback();

}

“`

説明

①今回のケースでは、「佐藤さん」は「剛田さん」にお金を2000円振り込むケースです。

②トランザクションを用いずこのケースを処理しようとした場合

 A.正常に問題なく処理が行われる。

 B.佐藤さんの処理は正常に行わ

元記事を表示

PHPでDBに接続してSQLを実行する

# PHPでDBに接続する為の機能 = PDO
PHPでデータベースに接続するための機能を「PDO」といいます。
PDOは「PHP Data Object」の頭文字をとったもの。

【PHPリファレンス】

https://www.php.net/manual/ja/class.pdo.php

# DBに接続する
PDOを利用してデータベースの接続を行います。

“`php:sample.php
$db = new PDO(‘データベースの種類:host=接続先アドレス;dbname=データベース名’, ‘ユーザー名’, ‘パスワード’);
“`

**(例)**

“`php:(例).php
$db = new PDO(‘mysql:host=localhost;dbname=my_db’, ‘root’, ‘root’);
“`

# SQLを実行する
DB接続の後、queryメソッドを利用してSQLを実行します。

“`php:sample.php
// testという名前のTableを作成する
$db->query(‘create tabl

元記事を表示

言語を比べると見えてくるもの


この記事は[リンク情報システム](https://www.lis.co.jp/)の「TechConnect!2022年2月」のリレー記事です。
engineer.hanzomon のグループメンバによってリレーされます。
(リンク情報システムのFacebookは[こちら](https://ja-jp.facebook.com/lis.co.jp/)から)

TechConnect!2022年2月のインデックスは[こちら](https://qiita.com/hs-lis/items/69eee14fd7bec92a854f)

#はじめに
初めて記事を書くので、何を書くかで悩みましたが、
IT業界に入って一番最初に気になったことにしました。

色々なプログラミング言語があるけれど、実際どの言語が何に適しているのか、
言語ごとの実際の内容の差はどうなのか……
今回は、どこでも聞いたことのある言語4つ程に絞って軽く書いていきます。

#言語毎の特徴と、利用されている分野

**■Java**
よく名前を聞く言語1位と言っても良いのではと言う言語

・特徴
 どん

元記事を表示

PHP SQLインジェクションを意識する 初学者向け

※PHP初学者向けコンテンツです。
内容に誤りがある場合はご指摘頂けますと大変ありがたいです。

PHP学習時に何か作成しながら勉強しようと思っている際に、
DB連携を行う時、サイトに書いてあるコードをコピペして動けるようになったと満足していたあの頃の自分へ向けて書きます。

PHPを用いてDB連携を行う僕へ

例えば僕はこんなプログラムを書いていた。

“`index.php

画面上でユーザーが入力するためのフォーム画面(簡易版)です。



元記事を表示

【XAMPP】MySQLの全てのクエリログを保存する方法

#経緯
初投稿です。
XAMPPでPHPを動かしていたところ、エラーは出ないけど操作が思っていたのと違う…なんてことがよく起こるので、データベースと接続して使うなら必ず設定しておきたいところ。
この設定を行っておくと、XAMPPのMySQLにクエリを飛ばすたびにログが残るので、bindParam等でうまくいっていない時などに、最終的にどんなクエリが飛んだのかなどを確認でき、根本原因の究明につながるかと思います。

#設定方法
では早速設定方法です。
###my.iniを編集する
XAMPPを起動して「Explorer」をクリックすると、xamppのフォルダに飛べます。
![スクリーンショット (42)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524944/04a006c3-964d-973c-ba8c-847d7746d978.jpeg)

xamppフォルダの中の「mysql」の中に「bin」というフォルダがあり、そこに「my.ini」というMySQLの設定ファイルが入っています。こ

元記事を表示

PHP独学ノート その2

PHPは大文字/小文字を区別しない。

なので

“`
PRINT ‘こんにちは、世界!
’;
pRinT ‘こんにちは、皆さん!’;
“`
のように記述しても問題なく処理される。
だが、見にくいだけでなくスペリングミスの原因にもなるのでなるべく公式ドキュメントに沿った記述を心がけるべき。

コメントは開発者のための備忘録

コメントはスクリプトの動作には関係しないメモ情報のこと。
大概他人が書いたコードは読みにくいし、自分が書いたコードも後から見るとなにがなんだか思い出せない。

そんな場合に備えてスクリプトの要所要所にコメントを残しておくことは大切。

PHPでは、コメントを記述するために3種類の記法を選択できる。

“`

“`
上記はHTMLコメント。PHPはHTML埋め込み型言語なので当然HTML部分ではこのコメントを使用できる。しかしスクリプトブロック()内では使用できない。

“`
//これはコメントです。
#これはコメントです。
“`
単一行のコメント。
「//」または「#」から行末までコメント

元記事を表示

【Laravel】PHPのバージョンを変更する

# 環境

docker-compose: 1.29.2
Laravel Framework: 8.80.0
Laravel Sail: 1.13.2

Laravel Sailを使用したLaravelプロジェクトになります。

# 手順

## `docker-compose.yml`

Laravelの[ドキュメント](https://readouble.com/laravel/8.x/ja/sail.html#sail-php-versions)にも手順がありますが、
それに則れば実現できるとは思います。

“`yml:docker-compose.yml
# PHP 8.1
# …
services:
laravel.test:
build:
context: ./vendor/laravel/sail/runtimes/8.1
image: sail-8.1/app
# …

# PHP8.0
# …
services:
laravel.test:
build:
context: ./vendor/lara

元記事を表示

【PHP】echo省略 PHPタグ省略

セミコロンも省略できるし使いやすい

#コード
“`PHP




“`
#結果
“`
1234ギブミーチョコレート1234ギブミーチョコレート
“`

元記事を表示

M1 Macでno matching manifest for linux/arm64/v8が発生した

dockerイメージでMySQLを使用しようとしたら以下のようなエラーが出た

“`
ERROR: no matching manifest for linux/arm64/v8 in the manifest list entries
“`

#解決方法:

docker-compose.ymlにplatform指定をする

“`
db:
platform: linux/x86_64 # M1チップ対応のため追記
image: mysql:5.7
container_name: app_db
“`

元記事を表示

PHP インスタンス変数のクラスを判定する

# 概要

– PHPにてインスタンスが格納されている変数(インスタンス変数)のインスタンス化元クラスを判定する方法をまとめる

# 方法1 型演算子(instanceof)の使用

1. 下記の様に記載することでインスタンス変数がクラス名を元にインスタンス化されたものならtrue、そうでなかった場合falseが帰る。

“`php
インスタンス変数 instanceof クラス名
“`

# is_a関数の使用

1. 下記の様に記載することで、インスタンス変数が当該のクラス、または親の一つに「クラス名」で指定したクラスが含まれる場合true、そうでなかった場合falseが帰る。

“`php
is_a(インスタンス変数, ‘クラス名’)
“`

# 参考文献

– [https://www.php.net/manual/ja/language.operators.type.php](https://www.php.net/manual/ja/language.operators.type.php)
– [https://www

元記事を表示

Laravel 9.x「 AWS Cloud9+Amazon Linux2 」で開発環境を作る

#この記事は「サポート解説動画を用意」しています

早く教えて~って方はページ下部の動画も見てください。

#1.PHPセットアップ
次の順番でコマンドを実行していけば環境が作れます!!

“`bash:PHP8アップデート

#<重要!!必ず1行ずつコマンドを打つこと!>
// パッケージのアップデート
sudo yum update -y

// composerバージョンアップ
sudo composer self-update

// PHPのパッケージをすべてアンインストール
sudo yum -y remove php-*

// amazon-linux-extrasをアップデート
sudo yum update -y amazon-linux-extras

// amazon-linux-extrasで使用中のパッケージと使えるパッケージを確認
amazon-linux-extras

// lamp-mariadb10.2-php7.2を使用停止
sudo amazon-linux-extras disable lamp-mariadb10.2-php7.

元記事を表示

PSRについての個人メモ

# 内容

– PSR1 PSR2の定義は下記に和訳されたものがある。
– [http://www.infiniteloop.co.jp/docs/psr/psr-1-basic-coding-standard.html](http://www.infiniteloop.co.jp/docs/psr/psr-1-basic-coding-standard.html)
– [http://www.infiniteloop.co.jp/docs/psr/psr-2-coding-style-guide.html](http://www.infiniteloop.co.jp/docs/psr/psr-2-coding-style-guide.html)
– PSR2の条件の最初に「PSR1に準拠している事」と記載されているのでPSR2に準拠していたら自動的にPSR1にも準拠していることになる。

元記事を表示

【CodeIgniter3(コードイグナイター)】$this->db->order_by()でnullを一番下にする

###sqlのcoalesce関数を使えば解決

筆者はべた打ちが嫌いであり、コードイグナイターのorder_by()でnullを一番下に持って行きたかった。

※例

画像があるデータを一番上にして、nullのふりがなを一番下にした状態で、ふりがなで昇順ソート

“`PHP
$this->db->order_by(“img_icon_flg DESC,coalesce(furigana, ”) = ” ASC,furigana”);
“`

元記事を表示

PHPの三項演算子

#三項演算子とは

“`
条件式 ? 式1 : 式2
“`

条件式を評価し、TRUEであれば式1をFALSEであれば式2を返す。
演算子なので、IF分とは違い処理を記述するのではなく式を記述する。

元記事を表示

Moodleの”サイトアップロード上限”を変更する。

標準では2MBが最大なのだが、バックアップファイルのサイズは2MBを超えることもある。Moodleだけでは最大値は変更できないので、php-fpm側の設定を変更する。

# 環境

– Ubuntu 18.04
– Moodle 3.10
– php-fpm 7.2
– nginx 1.14.0 (Ubuntu)

# 設定

以下では、最大サイズを8MBに設定している。

“`php:/etc/php/7.2/fpm/php.ini
post_max_size = 8M
upload_max_filesize = 8M
max_execution_time = 600
“`

“`:/etc/nginx/sites-enabled/default
location ~ [^/]\.php(/|$) {
client_max_body_size 8m;
}
“`

# 再起動

“`
sudo systemctl restart php7.2-fpm
sudo systemctl restart nginx
“`

# 結果

![size –

元記事を表示

OTHERカテゴリの最新記事