PHP関連のことを調べてみた2020年08月21日

PHP関連のことを調べてみた2020年08月21日

Laravel – phpでの日付の扱い方(date(), strtotime(), Carbonライブラリ)

Laravelで日記アプリを作っているときに、よく日付を扱ったので、備忘録としてまとめておく。

僕は、`date()`と`strtotime()`を使用して、日付を操作した。

### phpでの日付操作に関する関数、クラス
– `date()`←指定したUnixタイムスタンプ(第2引数。nowの場合は省略可)フォーマット(第1引数)で指定した値を返す。
– `strtotime()`←英文記法の時間をUnixタイムスタンプで値を返す。時間操作可能。
– `Carbon`←DateTimeを継承したCarbonクラス。どうやらLaravel7では`now()`だけで現在日時を表すことが可能。日時操作には便利らしいが、今回の日記アプリ作成には使わなかった。今後使ってみよう。

### 今日

“`php
echo date(‘Y年m月d日’); //2020年8月21日
echo now()->format(‘Y年m月d日’); //2020年8月21日
“`

### 日時を前後させる
#### date関数を使う
“`php:date
$d = ‘2020-07-20’; /

元記事を表示

初めてのオリジナルアプリ作成[環境構築編]

Laravelを学習し始めて、3ヶ月経ちそろそろオリジナルアプリを作成してみようかと。
今まで投稿アプリ、ECサイト、タスク管理などのアプリを参考書を活用し、作成してきたが遂にこの時が。

これを期にQiitaにオリジナルアプリ開発の手順や苦戦したところ等、様々な内容を記録として残していきます。

作成するプロダクトとしまして、

– 旅行日記アプリ

を題材に作成していきます。

## まず最初に

### プロダクト作成目的

– 旅行をするが、時間が経つと忘れてしまう。
– 写真を見返して行った思い出が蘇るが、行った内容が分からない。
– いろんな人の旅行を見れるようなものが作りたい。

### ペルソナ

– 旅行好き
– 旅行日記としてまとめたい
– 訪れた都道府県を記録したい

### 機能一覧

– アカウント作成機能
– ログイン、ログアウト機能
– 記事投稿のCRUD機能
– 投稿へのいいね機能
– 投稿へのコメント機能
– 投稿へのハッシュタグ機能
– 写真付き投稿機能
– 記事の検索機能
– Googleログイン、アカウント作成機能
– 余裕があればフォロー機能

元記事を表示

【PHP】数字と分解で覚えるclass(簡単)

#はじめに
実務でphpに触れる事が多くなってきました。
その中で、「class」の動きがいまいち分からなかったので、自分の理解度チェックの意味も込めて記事にしたいと思います。

#class
先ずは簡単なclassを使用したソースを見てみましょう!

“`php

name;
}
}

//②インスタンス生成
$dog = new Animal();

//③クラス内のプロパティに渡す値
$dog->name = “タロー”;

//⑥関数を発動
$dog->animalName();

//⑦
//出力結果 タロー
?>
“`

このソースを分解して見ていきましょう。

“`php
//①クラスを定義
class Animal{
}
“`

今回のメインですね。
classを定義する事

元記事を表示

PHPでアクセスカウンターを作る + CGIとして実行

# 本記事の内容

– PHPで簡素なアクセスカウンターを作る
– html内からCGIとして実行

# 背景

以前[Hugoで黒歴史サイトを作成した.](https://qiita.com/niwashi/items/59fb864f81230a06140c)
その際,アクセスカウンターとして[npc.cgi](http://www2.biglobe.ne.jp/~nir/npc/)を使ったのだが

– 明らかに古そう
– 画像で表示される

といった問題が有り,常々なんとかしたいと思っていた.
がんばって勉強した結果,CGI機能を使えばHTMLファイル内から自由にプログラムを実行できることを知り,勉強がてらアクセスカウンターを作ろうとした次第である.

## なんでPHP?

サーバーのコマンドを自由に実行できるならPythonやRubyでも良いじゃんと思われるかもしれない.
ていうか自分もそう思っていた.しかし,さくらのレンタルサーバーだと

– Pythonが2.7しか無い
– Rubyのバージョンもメンテナンス終了ギリギリ

という環境なので断念した.一方でPHPは最新のも

元記事を表示

VSCodeでXDebugからの余計な例外を無視する

# VSCodeでXDebugからの余計な例外を無視する

不定期に余計な例外を投げてくるのが面倒なのでそれを無視できるように

## 環境

| 環境 | バージョン |
| —— | ———- |
| PHP | 7.1.3 |
| XDebug | 2.9.4 |
| VSCode | 1.48.0 |

## 内容

`”ignore”`セクションを追加してそこに書いたファイルから出た例外は無視される

“`json
{
“version”: “0.2.0”,
“configurations”: [
{
“name”: “Listen for XDebug”,
“type”: “php”,
“request”: “launch”,
“port”: 9001,
“ignore”: [
“**/vendor/laravel/framework

元記事を表示

PHPマニュアルのコード例をJavaScirptで再現してみる–無名関数編–

##はじめに
PHPとJavaScript両方の勉強ができる方法はないものか考えてみたのですが、PHPマニュアルのコード例をJavaScriptで再現してみるのはどうか?と思い立ち、実際にやってみました。

##今回の題材
記念すべき(?)第1回目の題材は、無名関数のところに記載されていたコード例としました。以下はコード例の引用です。
[PHPマニュアル 無名関数](https://www.php.net/manual/ja/functions.anonymous.php)

“`php

元記事を表示

生年月日から年齢を計算して表示させる JavaScript PHP

少し前の案件で「会社概要ページの代表者プロフィールに年齢を表記する」ってことがあって、
年齢は毎年変わるから自動で更新させないとなー、と思いつつ面倒くさくてそのまま表記したって事がありました。

その事を思い出して、jsとphpで年齢を計算して表示させるってのを作ってみました。
jsかphpのどちらかで実装できるので、好きな方を使ってください。

##PHPで年齢を計算して表示
“19910402”の部分が生年月日です、年齢を表示させたい人の生年月日に変更してください。
ちなみに1991年4月2日は僕の誕生日です。

“`php:php
年齢は歳です。
“`

“`:実行結果
年齢は29歳です。
“`

##JavaScriptで年齢を計算して表示
同じく”19910402″の部分が生年月日です、年齢を表示させたい人の生年月日に変更してください。

“`html:html
年齢は歳です。
“`
“`javascript

元記事を表示

ラズパイとカメラを使用してカラーセンサー作成

#要望 加工品のつまり、終了を見抜きたい
機械工作工場にて自動レーンでの製品のつまり、最終加工品の完了した時を知りたい。
![製品のつまり.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/695230/448d4644-a84f-d782-286d-0d500cbdcb74.jpeg)
バルブの赤いハンドルの位置(開閉表示)を知りたい。
![バルブの状態.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/695230/f9fdc365-a49d-f83a-874d-a7d4d8d7dd7b.png)

製品は黄色、背景(レーン)は白、青、又は黒の原色。
既製品のセンサーが高すぎるので安く作って欲しいとの要望。

#完成品
ラズパイをローカルWIFIにつなげて。
http://”ラズパイのIPアドレス”/home.php

![加工品.jpg](https://qiita-image-store.s3.ap-northeast-

元記事を表示

DockerでGD Libraryのエラー対応

LaravelをローカルのDockerで動かしていて、
画像の圧縮しようとしたときにつまずいたのでメモ。

# エラー

“`
GD Library extension not available with this PHP installation.
“`

PHPのGDライブラリが使用できないらしい。
早速Dockerfileを編集

# 結論だけ言うと、このようなDockerfileになりました

“`
FROM php:7.4-fpm
COPY php.ini /usr/local/etc/php/

RUN apt-get update \
&& apt-get install -y wget git unzip libzip-dev libpq-dev libfreetype6-dev libjpeg62-turbo-dev libpng-dev \
&& docker-php-ext-install zip pdo_mysql \
&& docker-php-ext-configure gd –with-freetype –with-jpeg \

元記事を表示

[PHP]特定のYouTube動画の情報を取得する

特定チャンネルの動画情報だったりプレイリスト一覧を取得したいとき、YouTubeAPIv3を使うと思います。
PHPだと、ComposerとかでGoogle公式ライブラリを使うのもいいですが**特定の動画の場合はもっとかんたんに動画情報を取得できます。**

具体的にはAPIから動画情報が格納されているJSONを呼び出します。
以上!

## JSONのURL構造

https://www.googleapis.com/youtube/v3/videos?id=[動画ID]&key=[APIKey]&part=snippet,contentDetails,statistics,status

[APIKey]にはGoogleAPIから取得したAPIキーを入力してください。
キーの取得方法はネットに溢れかえってるんで自分で調べてください。

## サンプルコード
YouTubeAPIv3から特定動画のタイトルを取得してみます。

“`php:yt.php
$api_key = APIキーを入力
$video_id = 動画IDを入力
$url = “https://www.google

元記事を表示

PHPでOpenCVを使うまで(OpenCV-for-PHP)

PHPでOpenCVを利用する方法はいくつかあるようですが
OpenCV-for-PHPを利用する方法を紹介します。

[mgdm/OpenCV-forPHP]
https://github.com/mgdm/OpenCV-for-PHP

注意:
OpenCV-for-PHPはOpenCVの全ての関数がラップされていないので
利用したいOpenCVの関数が準備されていない場合、ご自身でOpenCV-for-PHP
ソースコードの改修・ビルドが必要になります。

### インストール前準備

インストールに必要なミドルウェアとバージョン
OpenCV 2.4.13
PHP5.2

動作確認できたOS
CentOS5
CentOS7

#### OpenCV2.4 インストール

OpenCVのビルドにgccとcmakeが必要なためそれぞれインストールします。
cmakeは、ソースコードcmake-2.8.12.1.tar.gzをダウンロードしてきて
ビルドしました。rpmパッケージがあればそちらを利用しても大丈夫と思います。

##### gccインストール
“`
yum insta

元記事を表示

【PHPでECサイト④】購入履歴・購入明細

## はじめに
今回は、購入履歴を実装していきます。
**※当ページは、[【PHPでECサイト】](https://qiita.com/taqmi/items/877292fc8c902f86e20e)で作られたものを前提にしています。**

### バージョン
PHP:7.4.5
phpMyAdmin:5.0.2
MySQL:5.7.30

### 今回作成するファイル
**html**
– history.php
– detail.php

**model**
– histories.php

**view**
– history_view.php
– detail_view.php

## テーブルの作成

“`sql:sample_histories
CREATE TABLE `sample_histories` (
`order_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
`created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE

元記事を表示

Laravelのpaginationで取得したcollectionデータの更新方法

Laravelのpaginationで取得したデータは特殊なcollectionクラスであるため、
新しいcollectionクラスを返すfilterやmapのような操作では要素が更新できません。

“`php5
$articles->getCollection()->transform(
function ($article, $key) {
//操作
return $article;
}
);
“`
のようにgetCollectionを使ってからtransformで変形することが必要です。

ここで、注意しなくてはいけないのは、articleの下にさらにcollectionがネストしている場合[1]も、
新しいcollectionクラスを返す操作ではそのcollectionクラスが更新できないという点です。

その場合はgetCollectionなしのtransformで更新できますが、
要素を削除する場合はunset等の新しいcollectionを返

元記事を表示

Herokuを使って開発アプリを本番環境へデプロイする

## 開発環境
– PHP 7.2
– Laravel 5.6
– MySQL 5.7
– Docker
– Nginx

## おさえておきたい料金体系
基本無料。
クレカ登録をすると稼働時間の増加以外にもアドオンの追加が可能になる。
> Freeプランではいくつか機能制限があります。
>
> アカウント毎に、アプリケーションは月に550時間までの稼働時間が割り当てられる
> アカウントにクレジットカードを紐付けると1000時間に増える
> 公開しているアプリケーションに30分間アクセスがないと、スリープモードに移行する

有料プランになると上記制限がすべてなくなる($25/月〜)

詳細は[こちら](https://jp.heroku.com/pricing)

# デプロイ方法
イメージ:gitのherokuリポジトリを本番環境へデプロイするだけ

## 0. Herokuアカウントの登録
(アカウントをもっていればスルーで)
以下ページよりアカウントを作成する
[Heroku公式](https://jp.heroku.com)より

## 1.HerokuCLIをローカル

元記事を表示

【PHP】配列keyの挙動について

###配列のkeyはint型かstring型の2種類
整数を配列のkeyに指定した場合、int型として扱われるため注意が必要です。

“`php
$array1 = [
‘1983’ => ‘ファミコン’,
‘1989’ => ‘ゲームボーイ’,
‘1994’ => ‘プレイステーション’,
];

var_dump(array_keys($array1));

// 実行結果
array(3) {
[0]=>
int(1983)
[1]=>
int(1989)
[2]=>
int(1994)
}
“`

###stringで指定していた場合でもkeyにするとint型になる

“`php

// keyをstring型で指定しておく
$key1 = (string)’1983′;
$key2 = (string)’1989′;
$key3 = (string)’1994′;

var_dump($key1);
var_dump($key2);
var_dump($key3);

//var_dumpの結果
string(4) “19

元記事を表示

PHP基礎④

### echoの省略

“`PHP:PHP

↓ ↓ ↓

# 省略できる!
“`

### ランダムなメッセージの表示

“`PHP:PHP
mt_rand(1,3);
# 1以上、3以下のランダムな整数値を作成
“`

### 悪意にあるコードを防げる

“`PHP:PHP

「htmlspecialchars」に(変数,ENT_QUOTES,文字コード)
“`

元記事を表示

PHPでDBに接続、CRUDを利用して掲示板を作る② Readについて

前回(https://qiita.com/progterry/items/2f82b82a5118c16010a0)はPHPでDBに接続、CRUDのCreateの機能を実装するところまでお話をしました。
今回はRead機能について書いていこうと思います。

#そもそもReadとは?
Readとは、掲示板の機能で必須とされるCRUDの中の1つです。
CRUDはそれぞれ、
Create
Read
Update
Delete
の頭文字を取っています。それぞれの単語の具体的な機能に関しては前回の記事を参照。

#実際のコード
“`
“;
} catch(PDOException $e){
echo “失敗:” . $e->getMe

元記事を表示

PHPの定数について

# 定数とは
宣言時に決めた値を再定義できない

## PHPで定数を定義する方法2つ
### `define()`で定数を定義する

“`php
define(‘定数名’, ‘値’);
“`
 PHP7〜 配列定数を定義できるようになった。

“`php
// 定数をクラス外に定義
define(‘CONSTANT’, [‘key1’ => ‘hoge’, ‘key2’ => ‘fuga’]);
class Sample
{
function printConst()
{
// クラス内から定数にアクセスする場合
print_r(CONSTANT);
}
}
$sample = new Sample();
$sample->printConst(); // CONSTANTが出力される
// クラス外から定数にアクセスする場合(同じ)
print_r(CONSTANT); // CONSTANTが出力される
“`

### constで定数を定義す

元記事を表示

amazonlinux2のhttpd + php7.4で「Uncaught Error: Call to undefined function simplexml_load_string」が出た場合の対処法

# エラー

amazonlinux2で動くwordpressにあるテーマをインストールしたら以下のエラーに遭遇。

“`
Uncaught Error: Call to undefined function simplexml_load_string
“`

ググった結果、どうやらSimpleXMLモジュールが入っていないとのこと。

# 動作環境

“`sh
$ php -v
PHP 7.4.7 (cli) (built: Jul 2 2020 23:17:59) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

$ amazon-linux-extras | grep enabled
24 epel=latest enabled [ =7.11 =stable ]
42 php7.4=latest enabled [ =stable ]

$ yum list inst

元記事を表示

【Xdebug】VSCODE+PHP Laravel+Windows+Xamppでデバッグ実行

# 環境
Windows10 x64
VisualStudio Code 1.47.3
Xampp v3.2.4 (PHP 7.4.7)
VSCODEプラグイン PHP Debug v1.13.0(本記事でインストール~設定します)

# Xdebugインストールと設定
#### ①VSCODEでPHP Debugをインストール
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535228/a2e6f08c-724a-9bc2-ce07-a1ba3598d2e0.png)

#### ②php.iniに下記を追記
※ C:\xampp\php\ext\php_xdebug.dllが存在しているか確認してください

“`ini:C:\xampp\php.ini
zend_extension = “C:\xampp\php\ext\php_xdebug.dll”
[XDebug]
xdebug.remote_autostart = 1
xdebug.profiler_append =

元記事を表示

OTHERカテゴリの最新記事