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

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

PHPで保守しやすいコードを書くサンプル① 「変数に名前つける」

# 背景
今年の上半期から、界隈で話題に登っているミノ駆動様の「良いコード/悪いコード」を拝読しました。
類にもれず、こういうのをもっと実践して取り組んで行けば、長期的な開発速度はもっと上がっていくに違いない!と意気込んでおります。

# 概要

* そんな背景のもと、該当書籍は主にjavaによる開発事例の記載となっているため、自分の主戦場がPHPであることもあり、「じゃあちょっと自分でPHPだったらどうなるかは手を動かしてみるか」となった次第です。
* とりあえず頭から手を動かすこと、を主眼においているため恐ろしく簡単だったり、効率がイマイチだったりするところもありますがそこはご容赦頂きたい次第です。(回を重ねていくつもりではあるので、徐々にそこは解消されていければと考えています)

# では本題

* 今回はいちばん簡単な「変数に名前を付ける」ていうやつ
* 改めてやる意味があるのかというところですが、律儀にやっていきます

## NG

“`
$val1 = 10000;
$val2 = 100;

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlのファイル入出力の比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlのファイル入出力の比較

# Python

https://qiita.com/onishi_820/items/f3068d5533a1f4f5ae39

# Ruby

https://qiita.com/Morio/items/8f0dc0801cfcb98d8269

# PHP

https://qiita.com/Morio/items/1deca77b370851ed914f

# Java

https://qiita.com/DeraTosev/items/77cd689da4426b892793

# JavaScript

https://qiita.com/shirokuman/items/509b159bf4b8dd1c41ef

# Perl

https://perlzemi.com/blog/20

元記事を表示

Cloud9でphpMyAdminを使用する方法

## 環境
PHP 7.3.30
laravel 8.83.23
mysql Ver 14.14

## 方法
1. mysql -u root -p
2. update mysql.user set password=password(‘root’) where user=’root’;
2. exit;
2. cd your_project/public
2. wget https://files.phpmyadmin.net/phpMyAdmin/4.8.3/phpMyAdmin-4.8.3-all-languages.zip
2. unzip phpMyAdmin-4.8.3-all-languages.zip
2. public 以下に回答されたフォルダ名をphpMyAdminへ変更
2. cd ../
2. php artisan serve –port=8080
2. Previewを表示
2. URLの末尾に/phpMyAdmin/index.phpを追加して表示
2. .env内を修正する

元記事を表示

配列にid的なのつけたいな

## こういう配列
“`
$tests = array(
array(
‘price’ => 100,
‘name’ => ‘hoge’),

array(
‘price’ => 200,
‘name’ => ‘huga’),

array(
‘price’ => 300,
‘name’ => ‘piyo’)
);

var_dump($tests);
“`
indexあるけど、1から始まるid付けたい
## こうした
“`
foreach($tests as $index => $test){
$id = 1 + $index;
$tests[$index] = array_merge($test,array(‘id’=>$id));
}

var_dump($tests);
“`
実行結果
“`
array(3) {
[0]=>
array(3) {
[“price”]=>
int(100)

元記事を表示

Log::Debugってobject出力できないのかい

## Log::Debugはobjectを出力できない
中身がobjectの変数を
“`
Log::debug($hoge)
“`
という感じにそのまま出力しようとしたら
“`
Object of class 〇〇 could not be converted to string
“`
ってエラー出た
`laravel.log`でログ見たいのに…

## 解決法
“`
Log::debug(print_r($hoge,true))
“`
のように、`print_r()`を挟む事によって解決

trueを忘れると、変数の中身ではなく、中身の有無(boolean)で表示されてしまうので注意

元記事を表示

LaravelDoctrineでXMLマッピング

# これはなに?
LaravelをFWとして採用した際に通常はEloquentをORMとして採用することがほとんどだとおもいます。
しかし、例えばレガシーなDB設計になっているWEBアプリケーションをLaravelで作り直す
などの必要が生じた場合や、リポジトリパターンを活用して重厚なシステムを構築したい場合
Eloquentでは厳しい場面も出てきます。
その際に第二の選択しとしてDoctrineというORMがあげられます。
このORMをxmlマッピングにて使用すると、DBに関する関心事と実際の業務ロジックを限りなく分離させることが可能となります。

この記事では、公式のドキュメントからのみではわかりづらいことが多い
LaravelDoctrineのXMLマッピング
を実現するまでの手順を記載していきます。
尚本記事内で紹介している手法を実際に使用しているリポジトリも紹介しておきます。

https://github.com/yuichi-sano/ddd-laravel-doctrine

↑をバンドルしているrepository

https://github.com/yuich

元記事を表示

Composerについて(概要からインストール方法まで)

# Composerとは
PHP向けのソフトウェアパッケージ・ライブラリの依存関係を管理する、パッケージ管理システム

## そもそもパッケージて何
システム開発を行う際に、便利な仕組みや関数をまとめたもの
標準のphpのみでの開発は難しいので、大体パッケージを利用しているのが常

もしパッケージがなければ、ここに書かれている内容を全て開発者自身がコードを書かなければいけないので、
私たちは常にパッケージの恩赦を受けながら開発している(と思う)

Composerはこのようなパッケージを管理するためのツール

## Composerのメリットて何

##### ・使用しているパッケージをファイルで管理できる
「パッケージ管理」なので、上記で説明したパッケージをファイルで管理できる
パッケージを取得したあとに、パッケージにバグや脆弱性が発覚し作成者がパッケージを更新することがある

手動でダウンロードしてきたパッケージだと、定期的にアップデート情報を確認して、
再ダウンロードするという作業が必要になるが、Composerで取得したものであるなら、updateコマンドを実行するだけで、
使

元記事を表示

laravelでのcomposerとは何か?

1、composerとは何か?
laravelにおいて使用可能な便利なフレームワークやライブラリを管理するシステムです。
composerがあることで、例えばAというライブラリをダウンロードする際に他に必要なライブラリも自動的にダウンロードしてくれるようになります。
(詳細:https://qiita.com/niisan-tokyo/items/8cccec88d45f38171c94)

2、laravelでcomposerが関連しているファイル・フォルダ

composer.json
インストールするパッケージ一覧を表示するファイル

composer.lock
実際にインストールされたパッケージの具体的なバージョンなどの情報が自動的に記録されるファイル

vendor
インストールしたパッケージのソース本体が格納されたディレクトリ

composer.phar
composerの実行ファイル。
このファイルをもとにしてcomposerのコマンドが実行される。
そもそも拡張子.pharのファイルはphpのアーカイブファイル(複数のファイルやフォルダをまとめたファイル)のこと。

元記事を表示

artisan したら PHP Parse error: syntax error, unexpected token “)” と Class “DOMDocument” not found が出た

Laravel のプロジェクトを人任せにしていたが自分の所でも開発をしなければならなくなったので、マイグレーションを作りたく artisan を使ってみたが、

“`shell
$ php artisan make:migration add_hoge_to_fugas –table=fugas
PHP Parse error: syntax error, unexpected token “)” in /home/test/projects/hogehoge-system/vendor/symfony/console/SignalRegistry/SignalRegistry.php on line 37
“`

こんなエラーが出ますね。これは PHP のバージョンじゃなかろうか。WSL2 にはいってるのは

“`shell
$ php -version
PHP 8.0.17 (cli) (built: Mar 20 2022 17:04:09) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.17, Copyr

元記事を表示

Laravel 複数ページで共通データをフロント側に渡す方法

# 今回やりたいこと
– Laravelで色んなページでよく使うデータをController毎にデータ定義して、フロント側に返すのではなく、共通でサーバ側からフロントへ渡せるようにしたい。

# どうやって実現するのか
– **Laravel view composer**(**ビューコンポーザ**)というもので、下記公式ドキュメントの引用文を読むと実現できそうなので使ってみる。

> ビューコンポーザは、ビューをレンダーするときに呼び出すコールバックまたはクラスメソッドです。
ビューをレンダーするたびにビューへ結合するデータがある場合、ビューコンポーザを使用すると、そのロジックを1つの場所に集約できます。
ビューコンポーザは、アプリケーション内の複数のルートかコントローラが同じビューを返し、常に特定のデータが必要な場合にきわめて役立ちます。

# やってみる

## おおまかな実装の流れ
1. サービスプロバイダファイルの作成
2. `app.php`へSeriviceProviderの登録
3. ●●Composerクラスを作成
4. SeriviceProviderへの設定追加

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlの関数定義の比較 (メソッド定義・サブルーチン定義なども)

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlの関数定義の比較 (メソッド定義・サブルーチン定義なども)

# Python

https://qiita.com/simonritchie/items/0f7b3768031dda834907

# Ruby

https://qiita.com/shizen-shin/items/dd41d1f0176a5e764f9f

# PHP

https://qiita.com/miriwo/items/a33688165a5f36ea8e76

# Java

https://qiita.com/takahirocook/items/5bfe43576d87a2a4006c

# JavaScript

https://qiita.com/tomcky/items/988fc5f56d019e9dc097

# Perl

ht

元記事を表示

CakePHP4でDebugKitツールバーが404エラーになる解決法

# はじめに

CakePHP 4.4.3 にアップデートしたところ、いつの間にか DebugKit toolbar が表示されなくなっていました

– GET:
– 404 Not Found

表示するように対応します

![cakephp_debug_kit_404.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586387/62e0a665-684f-d1c5-0a68-1ff859cc4938.png)

# 結論

:::note info
routes.php に DebugKit の指定すれば OK
:::

“`php
return static function (RouteBuilder $routes) {
$routes->scope(‘/’, function (RouteBuilder $builder) {

元記事を表示

Laravel/PHPに使えるライブラリを自己学習的にまとめてみた

# Carbon
言わずと知れたPHPで日付を扱うためのライブラリ

インストールは以下のコマンドでcomposerから行う
`composer require nesbot/carbon`

インスタンスを生成して直感的なコードで日付の計算ができる

“`php:例
$date = new Carbon(); // 2021-08-31

// 週末かどうか
echo $date->isWeekend();

// 金曜かどうか
echo $date->isFriday());

// 日付が何日間開いているか
$dateMay = new Carbon(‘2021-05-01’);
$dateMay->diffInDays($date);
“`

# L5 Repository
リポジトリクラスを自前で用意しなくても
このライブラリを使えば共通化されたリポジトリからスタートできる。
5.5以上ならサポートされているらしい。

インストールは以下のコマンドでcomposerから行う
`composer require prettus/l5-repository`

[Githu

元記事を表示

Apache+PHP7.4+MariaDB接続

# 概要
今日はPHPからMariaDBへ接続し、該当テーブルからデータを取得して画面へ表示するサンプルを書いてみます。
画面側に表示するのはSmartyテンプレートエンジンを利用します。

# 開発環境
Raspberry PIにApacheとPHPがインストールされている前提です。
今回使うバージョンは以下の通りです。

※環境構築については以下のサイトを参照してください。

https://qiita.com/neomi/items/8f7422b3fc183546586d

~~~bash
# Apacheのバージョン確認です。
pi@raspberrypi:~ $ apachectl -v
Server version: Apache/2.4.54 (Raspbian)
Server built: 2022-06-09T04:26:43

# PHPのバージョン確認です。
pi@raspberrypi:~ $ php -v
PHP 7.4.30 (cli) (built: Jul 7 2022 15:51:43) ( NTS )
Copyright (c) The PH

元記事を表示

laravelのORMを使うときにDBのtimestampを保存する方法

こんにちは。[virapture株式会社](https://virapture.com)でCEOしながら[ラグナロク株式会社](https://ragna-rock.com)でもCKOとして働いている[@mogmet](https://twitter.com/mogmet)です。

最後に、[ワンナイト人狼オンライン](https://online.1nite-jinro.com/link/blog)というゲームを作ってます!よかったら遊んでね!

最近忙しぎて全然更新できてないのでさらっとトラブルシューティングメモを残します。

今回はlaravelでMySQLのcreate/updateなどをするときに、DBサーバ側ののtimestampをレコードに保存する方法を紹介します。

## 結論

結論から言うと答えはここにありました。

https://zenn.dev/ad5/articles/5583b0e65b9d2140306b

そして答えのコード。

“`php
$attributes[‘updated_at’] = DB::raw(‘CURRENT_TIMESTAMP’

元記事を表示

WordPress 6.0でカスタムフィールドを表示させる方法

ググってもなかなか見つかりづらかったので情報共有しておく.

![投稿画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2544442/3a08141d-579e-6636-c6f7-a2f27c24bfc0.png)

上記のように投稿画面にいき,右上のオプションボタン(点が3つ並んでいるところ)をクリックして,下の設定ボタンを押す.

![設定画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2544442/24a2a2b3-97ca-58e9-48e1-8a28fa5e38d2.png)

設定画面の「パネル」タブへいき,一番下の「カスタムフィールド」のボタンをオンにする.

![カスタムフィールド](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2544442/f97c9245-a26f-f58d-8172-f87679082f7a.png)

投稿画

元記事を表示

ホームページのバナーはバニラのjsよりslick.jsを使った方が早いかつ品質が良い話(2)

前回はこちらにご参照ください。
https://qiita.com/u9908028/items/e666237c854e15a84103
目標は、既存のバナーをカドカワ様の公式ページのようなバナーに改造することです。

バナーの特性と目標

見た目は似てきたものの、マウス動作による反応、バナーの最後尾から最初の画像に移動する際のニメーションなどは自作のバニラjavascriptバナーでは作れませんでした。

カドカワ様のバナーは下記の幾つの特性があります。

  1. 定期的に画像を左に移動する(以下、定期的移動と呼称します)
  2. マウスが画像の上にいるとき、定期的移動が停止
  3. マウスが「点」を押したら、対応する画像に移動した後、定期的に移動しない
  4. 左右の矢印を
元記事を表示

phpにおけるinterfaceをシンプルに説明してみた

1、interfaceとは?
phpにおけるinterfaceは一言で言うと、「各クラスで必要なメソッドを定めたもの」です。
interfaceという英単語の意味が、「何かと何かを繋いだ境界線」のようなニュアンスです。
そのためオブジェクト指向におけるinterfaceは「クラス」と「クラス」の間をつなげる「約束事(ルール)」という意味で理解できるかと思います。
interfaceを使用することで、必要なメソッドがきちんと定義されていることを確認することが可能です。

2、interfaceの使い方

“`

元記事を表示

【laravel】スタティックメソッドでクラスを呼び出したのにコンストラクタを通ってる!!

みなさんもこんな経験ないですか?
私はあります。

例えばこんな感じです

“`
app/Model/

class UserMoel extends Model
{
$table = ‘user’;

$a = null;

public __construct()
{
$this->a = ‘かめはめ波’;
}

public static function getUser($userId)
{
$user = self::query()->where(‘user_id’, $userId)->first();
dd($this->a);

return $user;
}

———————————–

Http/Controller

class user extends Controller
{
public function login()
{
$user = UserModel::getUser(2)
}
}

//出力
かめはめ波
“`

元記事を表示

array_columnまとめ

# はじめに
業務でarray_columnを使用し、めちゃくちゃ便利な関数で今後も多く使用するだろうと思いまとめてみました。
自分の振り返りのため、皆さんの参考になれば何よりです。

## 第一引数に配列、第二引数に取り出す要素のキー名を指定するパターン
下記の例だと、idだけの配列が作成されます。
“`php
1, ‘name’ => ‘joy’, ‘hoby’ => ‘soccer’],
[‘id’ => 2, ‘name’ => ‘mike’, ‘hoby’ => ‘baseball’],
[‘id’ => 3, ‘name’ => ‘taro’, ‘hoby’ => ‘tennis’],
[‘id’ => 4, ‘name’ => ‘hana’, ‘hoby’ => ‘tabletennis’],
[‘id’ => 5, ‘name’ => ‘kim’, ‘hoby’ => ‘basketball’]
];

var_export(array_column($arr, ‘id’));

元記事を表示

OTHERカテゴリの最新記事