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

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

最寄り駅を高速で検索する無料APIを公開してみた

最寄りの駅を検索して返却するAPIサービス【NeaREST API】を公開してみたのでご紹介します。
※以前zennに投稿した内容と同じです
– 商用利用無料
– 認証制限なし
– 高速応答
– 最大検索件数20件
## 概要・デモ
以下ページにAPIドキュメントと仕様がありますのでご確認ください。

https://station.ic731.net/docs/near

また、簡単なデモとして今いる位置から最も近い駅を検索するアプリを公開していますのでスマートフォンでお試しください。

https://station.ic731.net/demo/nearest

以下のようなJSONを返却します。

“`json
{
“meta”: {
“status”: “success”
},
“data”: [
{
“station_id”: 9930101,
“station_name”: “都庁前”,
“pref”: “東京都”,

元記事を表示

変数に値が入っているか判定 isset

## 用途
変数に値が入っているかを判定したい時に使う

## 使用方法
“`php:php
if (isset(変数名)) {
// 変数がある場合の処理;
} else {
// 変数がない場合の処理;
}
“`

:::note warn
注意
「変数の値がある場合、且つNULLでない場合」に `TRUE` を返す。
「NULL」または、「値がない場合」は `FALSE` を返す。
:::

元記事を表示

foreachカウンター

## 用途
foreach内で何回ループしたかを数える際に使用する。

## 使用方法
“`php:php
“);
var_dump($counter.”
“);
$counter++; //カウントを1ずつ増やす
};
“`

“`:結果

0








“`

 
 
 
この記事は以下の情報を参考にして執筆しました。
– https://dezanari.com/php-foreach-counter/

元記事を表示

PHPの変数と定数(初心者向け)

# はじめに
PHPの基本をこの記事で書いていきます。
PHPの初学者の方向けの記事です。実際にコードを書いたりして
実際の挙動などを確認してみてください。

# 環境
MAMPをインストールします。
エディタはVScodeです。

# 環境構築方法
MAMPの環境構築が動画でわかりやすく載っていました。
PHPで出力する時はMAMPで出力するのでこちらを確認してください。

# バージョン
以下のバージョンで挙動を確認しました。

![スクリーンショット 2022-03-31 1.32.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/a3a83f23-1ba1-6e36-7d77-7d8531989048.png)

# 変数とは
変数とは変わる数のことで、***値に名前をつける名札***とイメージしてください。

元記事を表示

Mysql旧pearとPDO利用でテーブルフィールド名取得

oearによるDBのtablesinfoにてフィールド名取得例。
“`
require_once ‘DB.php’;
$dsn = “mysqli://root:password@localhost/db名”;
$options = array(
‘debug’ => 2,
‘portability’ => DB_PORTABILITY_ALL,
);
$db = DB::connect($dsn);
if (DB::isError($db)) {
die($db->getMessage());
}
$db->query(‘SET NAMES utf8’);
$info = $db->tableInfo(‘テーブル名’,0);
//print_r($info);
$i=0;
foreach($info as $key => $value){
//echo $info[$i][len].”
“;
echo $info[$key][name].”
“;
}
“`
PDOによるフィールド名取得。
“`
$mysqli = new mysql

元記事を表示

サクラレンタルサーバーでphpからメールを送信する

# 概要
サクラレンタルサーバーで動かしてるLaravelのフレームワークからメールが送信したくなったのでその時実装したものの紹介

## 方法

Laravelのフレームワークでやるやり方がいくつかあったんですけど、レンタルサーバー側でcomposerのupdateができなくなってしまっていて、それに頼ることができなくなったので素のPHPの書き方をベースに書くことにした。

## 書き方
最終的に書いたコードがこちら

“`php
mb_language(“uni”);
mb_internal_encoding(“UTF-8”);
$to = “送信したいメールアドレス”
$subject = “件名”
$header = “Content-Type:text/plain;charset=UTF-8\r\n”;
$header .= “From: 送信元メールアドレス\r\n”;
$param = “-f 送信元メールアドレス”;
$message = “

元記事を表示

月別記事一覧と、投稿数表示機能

# 目次
[1.月別集計](#1-月別集計)
[2.月別ページ表示](#2-月別ページ表示)

Laravelを使ったブログサイト作成で、月別記事一覧と投稿数を表示させる機能を作ったのでアウトプット記事書いてみます。
***

**↓ 最終目標はこんな感じです**
![スクリーンショット 2022-04-02 17.39.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2077017/bbcd94e8-d3c7-ddd1-ac0c-6fcd635d980a.png)

# 1. 月別集計

流れとしては、公開中の記事から指定した年の記事を取得し、月別取得&投稿数取得。
あとは blade側で @foreach を使って月と投稿数を表示させていく感じです!

**`where(‘is_published’, 1)` を書かないと非公開記事まで表示されてしまうので注意です!**

“`php:PostController.php
public function index(): View

元記事を表示

laravelでyoutubeの料理動画を管理するアプリを作ってみた。

laravelを使ってYoutube上にある料理動画を管理するサービスを作成しました。
Youtubeには様々な料理動画が日々アップされていますが、実際に作ってみてよかったものをストックしたり、
少し自分好みにアレンジした時のメモを残したいと思ったので、当サービスを作ってみました。
セキュリティ面など至らない点が多いとは思いますが、興味があれば使ってみていただけると幸いです。

⇩作成したサービス

http://laravel-cookshelf.com

## 自己紹介
PHPを本格的に学習し始めて3ヶ月目の駆け出しエンジニア。前職はインフラ系で現在Webエンジニアになるため転職活動中です。

## 使用技術

##### フロントエンド

+ Javascript
+ Jquery
+ Bootstrap

##### バックエンド
+ PHP(Laravel8)
+ YoutubeAPI
+ Mysql

##### インフラ
+ AWS
+ Git

認証機能はLaravelにデフォルトで備わっているlaravel-authを使用しました。
また、AWSはEC2でサーバーをた

元記事を表示

使用しているブラウザを判定

## 使用用途
– ユーザーが使用しているブラウザを判定する

## 使用方法
“`php:ユーザーエージェント判定
$hoge = $_SERVER[‘HTTP_USER_AGENT’]; // ユーザーエージェントを取得
if (strpos($hoge, ‘ここに各ブラウザを判定する文言を入力’) !== false) {
指定したブラウザだった場合に行いたい処理を入力
}
“`
strpos は判定したい文言が見つからない場合に false を返す。

## IEサポート終了
2022 年 6 月 16 日(日本時間)をもって、Microsoft 社より Internet Explorer のサポートが終了となることが告知されています。

IEを判定するには
`MSIE` か `Trident`という文字が入っているかを確認する。
(古いIEは「Trident」が含まれないので、2つを確かめる)

## その他のブラウザ
「Chrome」は
`Chrome` が入っているか判定する。
`Safari` の文字列が含まれる場合もあるため注意。
`Chrome` が入ってい

元記事を表示

Phaser.jsで作った大富豪をユーザー登録制にしました

Laravelでバックエンドを作成し、大富豪をユーザー登録制にしました。
成績がバックエンドに登録され、ネットで確認することができます。

大富豪のURL
https://www.new-doumeishi.me/vs_daihugou/public/

成績確認のURL
https://www.new-doumeishi.me/vs_daihugou_server/show

元記事を表示

PHPのin_array,array_column,array_multisortを駆使してランキング集計してソートするロジックを組んだ話

ランキング集計ロジックを作りたくて実装を進めていた

DBのランキングテーブルは下記のような構成になっていて

|id|no|place_id|
|-|-|-|
|1|1|abc|
|2|2|aaa|
|3|3|bbb|
|4|1|abc|

no(ランキング順)1のものは重みが3
no(ランキング順)2のものは重みが2
no(ランキング順)3のものは重みが1

といった形で集計した結果ポイントが一番高い順に並べるということがしたかった。

このテーブルから

“`
[
{place_id: 1, point: 4},
{place_id: 2, point: 2},
{place_id: 3, point: 1}
]
“`
こんな感じの結果を作りたかった。

“`php
// place_idごとにポイント集計とかする
foreach ($ranking_records as $ranking_record) {
if(in_array( $ranking_record->place_id, a

元記事を表示

PHPの書き方(初心者向け)

# はじめに
PHPの基本をこの記事で書いていきます。
PHPの初学者の方向けの記事です。実際にコードを書いたりして
実際の挙動などを確認してみてください。

# 環境
“`MAMP“`をインストールします。
エディタはVScodeです。

# 環境構築方法
MAMPの環境構築が動画でわかりやすく載っていました。
PHPで出力する時はMAMPで出力するのでこちらを確認してください。

# PHPの書き方

### 1. 基本的な書き方

“`index.php

“`
“`“`のの間に処理を書いていきます。この間でPHPの処理が走るので、
の外に書くとPHPとして処理されません。

***?>は省略することができます***。そうすると

元記事を表示

【Laravelエラー】Cannot drop table ” referenced by a foreign key constraint

## 環境
Laravel v9.5.1 (PHP v8.1.3)

## 状況
usersテーブルを“`php artisan migrate:rollback“`したときのエラー。

“`
Cannot drop table ‘users’ referenced by a foreign key constraint ‘posts_user_id_foreign’ on table ‘posts’. (SQL: drop table if exists `users`)
“`

## 原因
usersテーブルに“`post_id“`が外部キーとして設定されており、postsテーブルよりusersテーブルを先に“`rollback“`しようとしたため。

## 解決法
migrationファイルで外部キーを削除する。

“`php
public function down()
{
Schema::table(‘posts’, function (Blueprint $table) {
$table->dropForeign(‘posts_user_id

元記事を表示

DTO(Data Transfer Object)

# DTOとは
– オブジェクト指向プログラミングで用いられる**デザインパターン**の一つ
– 関連するデータをまとめ、データの格納・読み出しのためのメソッドを定義したオブジェクト
– データの**受け渡し専用**クラス
– プログラム間でデータを効率良く、互いに利用しやすい形式で渡す手段

# 詳細
DTOにはビジネスロジックを含まない。
データを管理するためのフィールド変数と、
フィールド変数に対応したゲッター・セッターが定義されるのが一般的。

# 例

“`php
id = $parameter[‘id’];
$this->value = $parameter[‘value’];
}

public function id(): string
{
return $t

元記事を表示

PHPでデータを取得する方法

## PHPでデータを取得する6つの方法
1.「スーパーグローバル変数」から受け取る
2.「ファイル」から受け取る
3.「データベース」から受け取る
4.インターネット上の「外部URL」から受け取る
5.「メモリ」から受け取る
6.「標準関数」から受け取る

### 「スーパーグローバル変数」から受け取る 

PHPの主なスーパーグローバル変数
$_GET

$_POST

$_SERVER

$_COOKIE

$_FILES

$_SESSION

$_GET

$_POST

“`php.sample



“`
“`php.sample

元記事を表示

【独学+職業訓練】実務未経験からたった一年半でバックエンドエンジニアとして医療系自社開発企業に転職したお話

# はじめに
こんにちは。ゆうと申します。

今回の記事を書くにあたりまして前置きとして、決して、「この通りにやれば効率よく転職できる!」みたいな感じのスマートなものではなく、「泥臭くもがき、苦しんだ記録」として記しています。ですので、時には反面教師にしつつ、参考にできる部分がございましたら参考にしていただくといった形でお読みいただければ幸いだと思っております。

今回はこれからプログラマー/エンジニアとしてWeb企業へ転職を目指されている方を応援するため、私自身、知識ゼロの状態から学習をスタートし転職するまでの過程を踏まえたロードマップを共有します。

# 自己紹介

・年齢:26歳
・学歴:私立理系大学中退
・職歴:電話営業(契約社員を1年間)→テレアポスタッフ(アルバイト)
・プログラミング経験:一切なし

大学4年生の途中で休学して訪問営業の仕事をしていて、復学して研究(物理化学分野)を続けるか、興味のあった医薬の分野を0から学び直すかどうかで悩んだ挙句、退学して再受験勉強をする事を決心しました。

はじめは薬学部を目指していましたが、勉強を進める中で医学の分野にも興味を

元記事を表示

正規表現で記号が入った文字をチェックするには

#### お問い合わせなどの入力フォームで名前に記号などの文字が入っているかチェックしたい

記号が入っている名前はいたずらの可能性がある

正規表現で記号かどうかチェック

`[^!”#$%&'()\*\+\-\.,\/:;<=>?@\[\\\]^_`{|}~]+`

でもこういうのもチェックしたい

`①②③㌢〒♡♢`

記号や機種依存文字を全部書いてもいいが、大変なので、いっそのこと許可する文字以外だったらNGにする
ひらがな、英数字、漢字、句読点、空白
`^[ぁ-んァ-ヶーa-zA-Z0-9一-龠0-9ー、。\n\r]+$/u`

でもそうすると名前で使われている機種依存文字もNGになってしまう。

こういうやつ
`謹祐神﨑謁逸敏﨏㘴隆晴𠮷海朗都羽㤗㟢﨑々猪猪隆繁飼祥塚悅悊惞惕愠`

今回はmysqlに登録してある正規表現に一致したらNGみたいな処理を使おうとしたが、限界なので、php側でチェックすることにした。

こんなやり方がある!

PHPで機種依存文字をチェック(https://mgng.mugbum.info/60)

> mb_convert_encoding

元記事を表示

CakePHP4 クエリビルダー 記法まとめ

## 概要

クエリビルダーの使い方をまとめる。非推奨な方法が混じっているかもしれない。
詳しくは[Cookbook](https://book.cakephp.org/4/ja/orm/query-builder.html)を読むこと。

命名は[規約](https://book.cakephp.org/4/ja/intro/conventions.html#id4)に則っているものとします。
実際のDBのテーブル名はスネークケース、CakePHPで使用するモデル名はパスカルケースで記述しています。

使用している CakePHP のバージョンは 4.3.6

## まずはクエリを発行してみよう

とりあえずSQLを発行できなければ始まらない。そのための準備

“`php
use Cake\ORM\TableRegistry;

// “users”テーブルを使いたいので、UsersTableクラスのインスタンスを取得
// @var \App\Model\Table\UsersTable
$users = TableRegistry::getTableLocator()->get

元記事を表示

カテゴリ別お知らせ機能をつくる時にやること

1.wordpress化
2.index.phpのお知らせを表示したい部分に以下を記述、カスタムフィールドでそれぞれのカテゴリを作って、スラッグの部分にカテゴリの名前(当てたいCSSを書く)、それぞれのスラッグ名のクラスにCSSを当てたものを用意するとカテゴリ別に色分けできる
“`

cat_name; //カテゴリー名
$catslug = $cat[0]->slug; //スラッグ名
?>

元記事を表示

【php】SplFileObjectでcsvを読み込む前に(SJIS-win → UTF-8)

SJIS-winからUTF-8にエンコードする時は注意が必要。

“`php:before

public function convertCsv($filePath){
$csv = new SplFileObject($filePath);
$csv->setFlags(
\SplFileObject::READ_CSV | // CSV 列として行を読み込む
\SplFileObject::READ_AHEAD | // 先読み/巻き戻しで読み出す。
\SplFileObject::SKIP_EMPTY | // 空行は読み飛ばす
\SplFileObject::DROP_NEW_LINE // 行末の改行を読み飛ばす
);

$readData = collect($csv)->map(function($data,$key){

元記事を表示

OTHERカテゴリの最新記事