PHP関連のことを調べてみた

PHP関連のことを調べてみた
目次

phpのアロー演算子(->)が意味わからん。

今回は毎回わからなくて困っていたアロー演算子について説明していこうと思います。
過去の記録を遡ってみるとアロー演算子がわからなくて調べるのは3回目でした。
図にもしてみたのでわかりやすくなっているかと思います。

# アロー演算子を一言で表すと
**クラスの関数(メソッド)や変数(プロパティ)を使うためのツール**
です。

これから具体的に説明していきます。

# クラスとは
関数(メソッド)や変数(プロパティ)を持つオブジェクトの雛形です。
オブジェクト指向とは??ということについては[こちらの記事](https://unison-career.com/engineer-media/6250/)が参考になります。

クラスのコードの例は以下の通りです。
“`php
class クラス名{

public $プロパティA = “プロパティA”;
public $プロパティB = “プロパティB”;

public function メソッド名(){
//処理内容
}
}
“`

例えば”表紙の色”と”ページ数”を決めてノートを作る例

元記事を表示

laravelで自作の関数を作る

## 自作関数を記述するファイルを作成
好きな所に自作関数を記述するファイルを作成。
app/functions.php
“`php: app/functions.php
test()
= “testです!”
“`

## 呼び出し方
以下だけでコントローラーやbla

元記事を表示

LaravelのModelsの階層を変えたらテストやSeederでエラーが出る

# 概要

Laravelの階層を `App\Models\User` から `App\Models` の元の状態に戻した。
テストを実行するとモデルを読み込めていないようなエラーが出るようになった。
ちょっと詰まったので備忘録として書いとく。

“`
Class “App\User” not found
“`

変更したファイル

– app/Models
– 名前空間
– app/confit/auth.php
– 認証に使用しているモデルの階層
– その他モデルをuseしているファイル

## 環境

– Laravel10
– PHP8.1
– MySQL8
– Docker

## やったとこと

① キャッシュクリア

“`
php artisan config:clear
php artisan route:clear
php artisan view:clear
php artisan cache:clear
php artisan clear-compiled
“`

② Composerの更新

“`
composer dump-autlo

元記事を表示

PHP stdClassって結局なんなのさ

## 概要

stdClassについて調べたので簡単にまとめる。

## stdClassって?

– PHPが最初っから定義してくれている組み込みのクラス
– メソッドもプロパティも定義されていない完全に空のクラス
– `new stdClass();`とすることでインスタンス化できる。
– インスタンス化後にプロパティを定義、値を格納する事ができる。
– 一時的な値の保持や、テスト時のモックのレスポンスなどに使われる。

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

## 参考文献

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

元記事を表示

【PHP】なぜarray_push()は遅いか?

## 結論
関数呼び出し分のオーバーヘッドで遅い

## 環境情報
Windows11機から、WSL2でUbuntu20.04を立ち上げています。
CPU: `13th Gen Intel(R) Core(TM) i7-13700F`

“`
# php -v
]PHP 8.1.2-1ubuntu2.14 (cli) (built: Aug 18 2023 11:41:11) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
with Zend OPcache v8.1.2-1ubuntu2.14, Copyright (c), by Zend Technologies
“`

## `array_push()`は遅い
「PHP 配列 追加」と検索するとまず紹介されるのが`array_push()`ですが、これは[遅すぎの王、遅すぎキング](https://qiita.com/uts1_6/items/11e348ead4bae71571b8)と有名です

元記事を表示

PHP8初級技術者認定試験を受験してみた

## はじめに
著者はphp実務経験1年目エンジニアです。
1ヶ月ほどの勉強でPHP8初級技術者認定試験を合格することができました!
php8を対象とした過去問の教材が少なく勉強しにくかったので、これから試験を受ける人の役に立てばと思い、試験内容や勉強方法を振り返りたいと思います。

## 受験してみた所感
プログラムの知見が多少あれば十分合格が目指せる試験だと思いました!
※プロゲート・パイザ・プログラミングスクール(PHPじゃなくてもOK)
php8の試験ですが、問題のメインはPHPそのものだと感じました。
「php7の過去問は沢山あるのに、肝心のphp8の過去問は全然無い。。。」と悲観する必要はなく、後述するphp8に対応の本と、ベータ版の過去問を解けば十分に対応可能だと思います。

## 問題について
問題は選択式で、実際のソースコードは書きません。
「4つの中から正しいものを2つ選びなさい。」みたいな感じです。
時間の体感ですが、見直しをガッツリ出来る程余裕はなかったです。

試験の詳細(URL)
https://www.ph

元記事を表示

【PHP】0はnull?

## はじめに
超初歩的なところなんでしょうけど
知らなかったので反省をこめ、書いていきます。

## 変数==0
以下のような条件式を書いてました。
“`.php
$test = null;

if($test == 0){
echo $test.”はZEROです。(実際はNULL)
“;
}else{
echo “ZEROじゃない”;
}
“`

“`.結果
はZEROです。(実際はNULL)
“`
なお、`false`でもそうなるそうです。

## 正しい条件式

単純に`===`にして
型も比較すればよいのです。
反省します。
“`.php
$test = null;

if($test === 0){
echo $test.”はZEROです。(実際はNULL)
“;
}else{
echo “ZEROじゃない(思い通り)”;
}
“`

“`.結果
ZEROじゃない(思い通り)
“`

元記事を表示

例外処理におけるfinally(ensure)は意味ない……なんて思ったら大間違い

# はじめに

この記事では各言語でよく使われる「例外処理」における`finally`(Rubyでは`ensure`)という構文の使い方と必要性について説明します。

例外処理に関しては殆どの言語で通用する話なので、今回はどの特定の言語の話ではなく、できるだけ一般的に語りますが、説明するためのサンプルコードはDart、Python、Rubyで表示します。

# 各言語の例外処理

色んな言語には「例外処理」という構文があります。その中で殆どは「`try` `catch` `finally` `throw`」と表記しますが、PythonとRubyなど違う表記が使われます。

各言語の例外処理の表記を纏めてみるとこのようになります。

言語 最初に実行 例外があれば実行 最後に絶対実行 例外を引き起こす
C# try

Laravel10.xのアクセサの記述がlaravel-ide-helperで補完可能なプロパティとして生えない件について備忘録

Laravelのモデルクラスに記述できるアクセサについて[IDE Helper Generator for Laravel(以後、laravel-ide-helper)](https://github.com/barryvdh/laravel-ide-helper)を使用したときに期待するPHPDocが生えないことがあり調査しました。

## アクセサについておさらい
– Laravel8.xの頃とLaravel9.x以降でドキュメントに書いてあるアクセサの書き方が異なる
– 8.xの頃は`get〇〇Attribute`のルールに則ったメソッドを定義し、任意の値を戻り値として返す
– 9.x以降は`\Illuminate\Database\Eloquent\Casts\Attribute`のインスタンスを返す
– 9.x以降のLaravelで8.xの頃のアクセサを記述することは可能
– `Attribute::make()`のgetパラメータにセットする関数でアクセサとしてアクセスさせたい任意の値を戻り値として返す

“`php:8.xのアクセサ
use Il

Meta graph Api アカウント情報取得Api (/me/accounts)が空の配列を返す問題

## 結論
権限を追加するべきだった。
`business_management`権限を追加してください!!

## 原因
ログインURLを生成するときに渡す権限に問題がありました。

以下の権限でアカウント情報を取得しようとしたら失敗した。

“`
$permissions = [
‘public_profile’,
‘instagram_basic’,
‘pages_show_list’,
];

$login_url = $helper->getLoginUrl(config(‘services.facebook.redirect_uri’), $permissions);
“`

## 下記のように変えて解決
“`
$permissions = [
‘public_profile’,
‘instagram_basic’,
‘pages_show_list’,
‘business_management’,
];
“`

xserverのPHPバージョンアップ

xserverのphpバージョンアップがどん詰まったので備忘録
他にスマートな方法をご存知の方、教えてください…

### xserverへSSH接続して確認したPHPバージョン
“`
$ php -v
PHP 5.4.16
“`
xserverのPHP Ver.切り替え画面
![スクリーンショット 2024-01-10 14.41.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3113701/016ca1be-8237-a614-7462-1e199f513751.png)

### PHPバージョンを合わせる

xserverのPHP Ver.切り替え画面で設定したPHP8.1.22に変更します

xserver上に存在するPHPのバージョンを検索
“`
$ find /opt/php-*/bin -type f -name ‘php’
“`
結果
たくさんのPHPバージョンが出てきました
“`
/opt/php-5.1.6/bin/php

/opt/php-5.4.16/bi

VBA学習備忘録③ Python等の他言語から見たVBAの独自な文化&方言①

そもそもVBA(Visual Basic for Application)とは

https://qiita.com/thinking-weed/items/b322d1e34b888aa3ca22

これまでPHP、Laravel、Python(と少しだけJava)を少し勉強してきた中であまり聞いたことのないような謎方言や謎文化が時々出てくるので集めてみた~その壱~

※以下の文にあるコードは、基本Subプロシージャ(指定した操作を実行する基本的なマクロ)に用いるものであり、冒頭のSub マクロ名()と末尾のEnd Subは省略してあります。

①「解放」=「削除」(+「エクスポート」)

details

上記Qiitaの通り、VBE(VBAのエディター)を開いて、**挿入** ⇒「~モジュール」を開くと
以下のような画面が出てきますが、例えば無駄なモジュール追加しちゃった場合、
最初削除どこにあるん??(´。`)??ってなりました。

![module_release.

Laravelを使った開発でのFailed to load resource: the server responded with a status of 404 (Not Found) の解決方法

## エラーになった背景

Webアプリの開発をしていた際に、HTMLとCSSをいじっていたら上記のエラーと遭遇しました。
cssファイルをうまく読み込めない方に参考にしていただきたいです。

## 解決方法

### cssファイルを移動させる

cssファイルが僕の場合resourcesディレクトリにあったのでそれをpublicディレクトリに移動させました。

### cssファイルの記述を確認する

laravelではcssファイルなどの外部ファイルの読み込みにasset()関数を使うらしいです。

“` layout.blade.php

“`
cssファイルを読み込むファイルに記述してください。
これで設定は完了です。

### 参考文献

https://www.slingacademy.com/article/laravel-link-to-static-assets-in-blade-templates/#google_vi

universalObjectCratesClassesとは何か

PHPStanを使うとオブジェクトの未定義プロパティへのアクセスを警告できて便利だが、必ずしもそうしたくないことがある。

## プロパティのオーバーロード

PHPは[オーバーロード](https://www.php.net/manual/ja/language.oop5.overloading.php)と呼ばれる機能でメソッドやプロパティの動的アクセスを提供できる。

https://www.php.net/manual/ja/language.oop5.overloading.php

:::note warn
オブジェクト指向用語の『[オーバーロード](https://ja.wikipedia.org/wiki/%E5%A4%9A%E9%87%8D%E5%AE%9A%E7%BE%A9)』の一般的な用法とは異なるので注意。
ただしPHPでもこの機能を利用して挙動を再現することは… できなくはない。
:::

プロパティに関しては、たとえば以下のように実装できる。

“`php

PHP ぼやき日記 2024-01-30

– [前回](https://qiita.com/sj-i/items/4218804e1cd7f41fc4b0)

不定期に誰に向けるでもなく PHP に関する雑な殴り書きをしている。気がつけば 1 度も投稿することなく 1 月が終わろうとしていたくらいの雑さ加減。

# phpy がまあまあ熱心に更新されている
– https://github.com/swoole/phpy
– phpy は swoole の人が作った PHP の C 拡張
– CPython の VM をそのまま埋め込み、PHP 側と Python 側で相互にコードを呼び出せるよう橋渡しをしている
– つまり同じプロセス内に PHP と Python 両方の公式 VM を同居させるということ
– [wxPython](https://github.com/swoole/phpy/blob/main/examples/wxPython/hello.php) で GUI アプリも書けるし
– [torch だの transformers だのをインポートして今をときめく LLM を読み込む感じのコード](https

人生初のチーム開発。。。Best Award受賞!

# 目次
[1.はじめに](#1-はじめに)
[2.チーム開発概要](#2-チーム開発概要)
[3.メンバー構成](#3-メンバー構成)
[4.初チームMTG](#4-初チームMTG)
[5.課題の明確化](#5-課題の明確化)
[6.要件定義](#6-要件定義)
[7.インセプションデッキ](#7-インセプションデッキ)
[8.スライド作成、設計、アーキテクチャの明確化](#7-スライド作成、設計、アーキテクチャの明確化)
[9.ワイヤーフレームの作成](#9-ワイヤーフレームの作成)
[10.データベース](#10-データベース)
[11.環境構築](#11-環境構築)
[12.タスクばらし](#12-タスクばらし)
[13.実装](#13-実装)
[14.振り返り](#14-振り返り)
[15.おわりに](#15-おわりに)

## 1. はじめに
私は、内定直結のエンジニア実習『アプレンティスシップ』に参加しています。
2023年3月から独学でプログラミングを学び始め、チーム開発や実務を経験したいという課題をもっていました。そのときにたまたまアプレンティスシップを知り、山浦さ

Laravel ExcelのCSVインポートで、日本語のカラム名を取得できない問題。

# ヘッダーのカラム名を取得

エンコーディングの問題以前に、そもそもヘッダーの行を正常に取得できていなかった。
以下設定でformatterをnoneにすれば解決する。

“`config/excel.php
‘imports’ => [
‘heading_row’ => [
‘formatter’ => ‘none’,
],
],
“`

クラス毎に設定する場合は以下。
“`Imports/TestImport.php
use Maatwebsite\Excel\Imports\HeadingRowFormatter;

HeadingRowFormatter::default(‘none’);

class TestImport implements ToModel
{
}
“`

# シフトJISの文字化け

先程のconfig/excel.phpでも設定できるが、
クラスに設定する場合は、getCsvSettings()を追記する。
WithCustomeCsvSettingsをimplementsすることも忘れずに。

“`Impo

HackTheBox Clicker WriteUp

今回は、HackTheBoxのMediumマシン「Clicker」のWriteUpです。
名前から連想できる脆弱性はなさそうですね。どのようなマシンなのでしょうか。

![スクリーンショット 2024-01-28 23.34.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1664764/0eccca6b-7d0a-28d1-ca19-8449e73d143d.png)

グラフは普通のMediumという感じですね。
評価は高そうなので、楽しみです。攻略目指してがんばります!

HackTheBoxってなに?という方はこちらの記事を見てみてください。一緒にハッキングしましょう!

https://qiita.com/WhizOwl/items/165783694cb4791cff34

また、HackTheBoxで学習する上で役にたつサイトやツールをまとめている記事もあるので、合わせてみてみてください!

https://qiita.com/Perplex/items/30f949fe261f56a

PHPStan どうしても解消できない静的解析エラーをPHPStanの設定で見なかったことにする

## 概要

PHPStanを使っていてどうやっても解消できない静的解析エラーをエラーとして扱わないようにする方法を簡単にまとめる。

## 注意

本方法は多用してはいけません。多用するとPHPStanを入れている意味がなくなります。
コード上でどうにかして対処し、それでもどうしても解消できない場合に使いましょう。

## お願い

なるべくエラーを許容する方法で解決したくありません。もっと良い解決方法がございましたらぜひ教えてほしいです。。!

## 方法

phpstan.neonというファイルに見過ごしたいエラーを指定することでそのエラーをなかったことにする事ができる。
具体的には`ignoreErrors:`のあとに正規表現を使って見過ごしたいエラーを指定する。

エラーとは下記のように行数とエラー内容で表示されるヤツのことである。

“`
—— ————————————————————————————-
Line ファイルパス
——

MAMPを使用して、wordpressの環境構築を行う

### はじめに

wordpressがPHPで動いていることから、MAMPを使用してwordpressの環境構築を行なってみたので備忘録として残します。

### 今回使用するプロジェクトディレクトリを作成する

任意の場所に、あらかじめプロジェクトディレクトリを作成しておきます。

### MAMPのインストール

公式からダウンロードする。
※M1チップのAppleを使用しています。
https://www.mamp.info/en/mamp/mac/

![スクリーンショット 2024-01-27 13.00.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3513569/44fffd5f-eb95-7928-5125-3584515dd677.png)

ダウンロード→ダウンロードしたファイルをクリック→上記のようなインストーラーが立ち上がります。
同意やインストール先を聞かれるので「続ける」をクリックし、インストールは完了です。

あらかじめ作成しておいた、プロジェクトディレクトリにMA