- 0.1. [PHP]xamppでmb_send_mail
- 0.2. withValidatorでいろいろできる
- 0.3. mysqliを使ってmysqlに接続してみる
- 0.4. WordPressコンテンツ内の画像をsrcsetを使った出し分けに書き換える
- 0.5. phpのアロー演算子(->)が意味わからん。
- 0.6. laravelで自作の関数を作る
- 0.7. LaravelのModelsの階層を変えたらテストやSeederでエラーが出る
- 0.8. PHP stdClassって結局なんなのさ
- 0.9. 【PHP】なぜarray_push()は遅いか?
- 0.10. PHP8初級技術者認定試験を受験してみた
- 0.11. 【PHP】0はnull?
- 0.12. 例外処理におけるfinally(ensure)は意味ない……なんて思ったら大間違い
- 0.13. Laravel10.xのアクセサの記述がlaravel-ide-helperで補完可能なプロパティとして生えない件について備忘録
- 0.14. Meta graph Api アカウント情報取得Api (/me/accounts)が空の配列を返す問題
- 0.15. xserverのPHPバージョンアップ
- 0.16. VBA学習備忘録③ Python等の他言語から見たVBAの独自な文化&方言①
- 1. そもそもVBA(Visual Basic for Application)とは
- 2. これまでPHP、Laravel、Python(と少しだけJava)を少し勉強してきた中であまり聞いたことのないような謎方言や謎文化が時々出てくるので集めてみた~その壱~
[PHP]xamppでmb_send_mail
# 概要
xamppでgmailからメールを送信する際の設定方法です。
1.googleのアカウント設定の「セキュリティ」から2段階認証プロセスをオンにする。
2.2段階認証プロセス画面の一番したにある「アプリパスワード」を設定。
表示されたパスワードを再確認することはできないのでメモしておく。# xampp
1.\php\php.iniの[mail function]で`sendmail_path`を編集。
php.iniは念のためにバックアップする。
自分はxamppをDドライブに入れているので`”\”D:\xampp\sendmail\sendmail.exe\” -t”`となる。
2.sendmail\sendmail.iniを編集。
“`:
smtp_server=smtp.gmail.com
smtp_port=587
auth_username=hoge@gmail.com
auth_password=**** **** **** ****
force_sender=hoge@gmail.com
“`
withValidatorでいろいろできる
今回はLaravelのFormRequest内で使える`withValidator`メソッドについて紹介します。FormRequestはリクエストパラメータに対してバリデーションルールの定義などをできるクラスですが、今回紹介するwithValidatorを使用することで、より融通の効くカスタムバリデーションルールを定義できます。
## 基本的なバリデーションの定義
まず通常のFormRequestでバリデーションを定義するには`rules`メソッドを使い、必須項目か、一意とするか、最大何バイトかなどが設定できます。以下は単体レコードのinsertもしくはupdateを想定しています。
“`php
public function rules()
{
return [
‘title’ => ‘required|unique:posts|max:255’,
‘body’ => ‘required’,
];
}
“`
業務でのことですが、とあるapiでリクエストされたの中に以下のような構成のレコードが合わせて送られてきました。“`
mysqliを使ってmysqlに接続してみる
以前PDOクラスを使用してmysqlに接続してデータベースを操作する方法を書きました。今回はmysqliを使ってphpからmysqlに接続する方法を書きます。
よく考えたらPDOクラスの方が汎用性高いのでこっちの記事を先に書くべきだったかもですね。
自分用のまとめなので間違いや省略などあります。間違いに関しては指摘していただけると幸いです。## データベースに接続
mysqli_connect関数を使用してデータベースに接続します。また、接続できたらtrue、できなかったらfalseが帰ってきます。
“`php
$link = mysqli_connect(‘host’,’user’,’password’,’DB’);
//引数はホストorIPアドレス、ユーザ名、パスワード、データベース名
“`
## 接続に失敗した時エラーを出力
なにかしら問題があってエラーが発生した時はmysqli_connect_error関数を使ってエラーを出力します。“`php
if(!$link){
echo “エラー : データベースに接続できませんでした。” . PHP_EOL;
WordPressコンテンツ内の画像をsrcsetを使った出し分けに書き換える
#はじめに
WordPressで表示している内容をRatinaに対応するようにしてほしいと依頼された。
ブロックエディタの画像やサムネイルであれば自動で出し分けされるようだが今回はまとめてHTMLで記述されている。
なんとかしてimgファイルを置換すればいいかな。#解決方法
WPテーマ内のfunction.phpに以下のコードを追加
“`function img_to_multi($text){
//画像タグを抽出
$pattern = ‘//i’;
preg_match_all(‘‘, $text,$result);$target = array();
$replace = array();
foreach($result[2] as $i=>$img_base){
$img = $img_base.$result[3][$i];
//画像
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 IlMeta 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/biVBA学習備忘録③ 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月から独学でプログラミングを学び始め、チーム開発や実務を経験したいという課題をもっていました。そのときにたまたまアプレンティスシップを知り、山浦さ関連する記事
OTHERカテゴリの最新記事
- 2024.09.19
JavaScript関連のことを調べてみた
- 2024.09.19
JAVA関連のことを調べてみた
- 2024.09.19
iOS関連のことを調べてみた
- 2024.09.19
Rails関連のことを調べてみた
- 2024.09.19
Lambda関連のことを調べてみた
- 2024.09.19
Python関連のことを調べてみた