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

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

file_get_contentsが失敗する

以下のサイトのサンプルを自前の環境で実行しようとしました。
https://note.com/kazztech/n/ndb3a5468f299

呼び出しプログラムを実行したところ、以下のエラーになりました。
PHP Warning: file_get_contents(http://192.168.33.10:8000/api.php?num=10): failed to open stream: HTTP request failed!

このURL自体(以下URL)は表示できました。
http://192.168.33.10:8000/api.php?num=10
結果として、{ “status”: “yes”, “x114”: “1140”, “x514”: “5140” }と表示されました。

なぜエラーになるのでしょうか?

検索したところ、php.iniのallow_url_fopenの値の問題かもしれないとありましたが、これはOnでした。
WebサーバーはPHPのビルトインサーバーです。
PHPは7.1.33です。

元記事を表示

VSCodeのデバッグ中にDeepExitExceptionが発生したら

VSCodeでphp開発始めたところ、デバッグ中にDeepExitExceptionが乱発する自体に遭遇したので、原因と対策。

## 結論
### 原因
デバッグ中にコード修正すると、phpcsが実行され、その中でDeepExitExceptionを発生させています。仕様に近い。何か問題が起きている訳ではないです。
具体的には、内部的に実行されているphpcsのコマンド引数をパースするところ(Config.php内)で、例外スローされています。(この例外スローが適切なのかは疑問)

### 対策
VSCodeのブレークポイントで、Everythingのチェックを外すだけです。標準でEverythingチェック入っています。

## 開発環境
VSCode
phpcs & phpcbf
xDebug

元記事を表示

php繰り返し文

##はじめに
私は今までRuby,railsを勉強していましたが、転職活動の末phpを使用する企業へ入社しそうなので、新しくphpを勉強する事とした。

初歩的な事から勉強しているので、公開して人の役に立つというより自分の理解度を確認するための記事(自己満)となりますので、間違っている可能性が十分あるので気になった方はご教示いただけたら幸いです。

————————————————————

早速本題に入ります。
phpの繰り返し文について、やり方は2種類ある。
1つはwhile文。もう1つはfor文。順にコードを書いていきます。

#####やりたい事:1〜365の数字を繰り返し表示させる

##while文

 

“`

“`

これが基本の考え方で、実際コードを書くと、、、

“`

元記事を表示

CORS回避と、ReactからAPIへのPOSTリクエストが正常に処理されなかった話

# 目的
ReactからaxiosでPOSTのAPIを叩きたい。
## 環境
React:ローカルの開発環境 http://localhost:3000/、
API:PHPで書かれており、開発サーバにおいてある https://api.example.com/***
同じドメイン上に無い環境です。

## 状況

ReactからaxiosでAPIにPOSTリクエストを投げているが、CORSエラーで弾かれます。

また、axiosからPOSTリクエストが正常に投げられていない、もしくはPHPが正常にPOSTリクエストを受け取れていないような挙動をします。

こんな状況です。

私は基本的にPHPの開発がメインのため、Reactは初心者です。
もちろんaxiosも初めて使います。

javascriptでAjax処理は書いたことがあるものの、コピペで動けば良い程度の使い方しかしませんでした。

また、とりあえずの解決は出来たものの、各機能の仕様を理解した上での対策ではないため記事に誤りがある可能性しかありません。
ご理解ください。

## エラー1 CORSエラー
“`
Access

元記事を表示

phpunit8に上げたらPHPUnit does not appear to be installed.と言われた

プロジェクトでphp7.3、fuelphp1.8.2を使っています。
しかし、phpunitのバージョンが5.6と古く、もうすぐサポートが切れてしまうためバージョンアップした際に出たエラーの解決について書いていきます。

# 前提
バージョンアップが完了しているわけではありません。
怒られたので、それの解決方法だけです。
もしかしたら、別の方法があるかもしれないので、その場合は是非コメントお願いします。

# やったこと
本当はdocker内でコマンド叩いていますが、長くなってしまうので必要なところだけ抜粋します。
phpunitのバージョンアップに伴って依存パッケージの更新も必要だったため更新しています。

“`
./composer.phar remove phpunit/dbunit
./composer.phar remove phpunit/phpunit
./composer.phar remove phpunit/php-timer
./composer.phar require –dev phpunit/phpunit ^8.5.2
./composer.phar

元記事を表示

Laravel でModelの配列を created_at , updated_at で並べ替えたいとき

## TL;DR
[usort](https://www.php.net/manual/ja/function.usort.php) を使って行います

“` php
$posts = $user->posts->toArray();
usort($posts, function ($a, $b) {
if ($a[‘updated_at’] != $b[‘updated_at’]) {
return ($a[‘updated_at’] < $b['updated_at']) ? +1 : -1; } if ($a['created_at'] != $b['created_at']) { return ($a['created_at'] < $b['created_at']) ? +1 : -1; } return ($a['id'] < $b['id']) ? +1 : -1; }); ``` ## デモンストレーション Postモデルのデータをupdated_at > created_at > id

元記事を表示

twitterの情報発信を助けるWebサービス「EMOEMO」を2月の14日に公開します!

# はじめに
初めまして!てらって呼んでください:relaxed:
簡単に自己紹介をするとごみくずプログラミング初学者です。(3ヶ月目)
現在個人開発中のWEBサービス(EMOEMO)を紹介してみようと思い記事を書いています。

#EMOEMOはどんなサービス?

**メモアプリからそのままツイート出来ます!**
**EMOEMOの提供するサービスの基本はこの1点です。**
メモを管理できたりする機能も随時実装予定ですが、これはおまけみたいなもんです。

#EMOEMOは何を解決するの?

プログラミング勉強をしていてわからない単語を調べる機会はあるかとおもいます。
私の場合はかなり多く単語をgooglekeepにメモっておいて、後からまとめて調べてそれをコピペしアウトプットとしてtwitterに呟いていました。
ある時、このコピペがだる過ぎてこれを解決したくてEMOEMOを製作し始めました。

#使ってみて欲しい人は?
– 情報発信を始めた人
– まさに1ヶ月前の自分とこれからの自分です。
– twitterjのタイムラインを見過ぎてしまって、時間を無駄にしてしまっているなと感じてい

元記事を表示

Dynamic select-box with php using Vue.js

## Introduction

There might be a demand that people would like to develop dynamic select box using Vue.js.
And I was the one of them.

Then, I coded like below, and It can be also available to use old value after post from form or back.

## Code

“`php:index.php

元記事を表示

【メモ】Windows10 + Apache + PHP

#Windows10 + Apache + PHP 設定
これまで縁の無かったPHPに初挑戦。忘れないように環境構築・設定のメモを作成。

##PC環境:
・Windows 10 Pro 1903 x64
・PHP 7.4.2(VC15 x64 Thread Safe)
・Microsoft Visual C++再頒布パッケージ(Visual Studio 2019)
・Apache 2.4.41 Win64

##PHPのセットアップ
@uriuri7610 さんの「WindowsでPHP/Apache環境構築(ダウンロード~画面を起動するまで)」を参考に設定。記事の最終更新から1年以上経過していたが、PHP / Apache とも最新版で手順通りに設定できた。

セットアップの手順は
・[PHP公式サイト][php]よりPHPをダウンロード、セットアップ
・[マイクロソフトサポートサイト][ms-support]よりMicrosoft Visual C++ 再頒布可能パッケージをダウンロード、セットアップ
・[Apache公式サイト][apache]よりApacheをダウンロード、

元記事を表示

PHP 上級試験範囲 オブジェクト 個人的な備忘録

# インターフェース基礎

**インターフェース**は、抽象メソッドの集まりに名前を付けたもの。インターフェースを使用すると、そのインターフェースを持つクラスが備えるべき機能を明示することができる。インターフェースのインスタンスを作成することはできない。

インターフェースは`interface`キーワードで定義する。インターフェース内のメソッドは`abstract`キーワードを付けないが、抽象メソッドとして扱われる。

**抽象メソッドを持つインターフェースの定義**

“`php:php
interface X {
function a() // 抽象メソッド
}
“`

クラスにインターフェースを持たせることを**実装**という。
※抽象メソッドとをサブクラスで具体的に定義することも実装と呼ぶ。

インターフェースを実装するには、クラス名の後ろに`implements`キーワードを置き、実装するインターフェース名を記述する。インターフェースを実装するクラスでは、インターフェースのすべての抽象メソッドを実装するか、またはそのクラスを抽象クラスにする。

**インターフェ

元記事を表示

php 三項演算子

# 三項演算子

if文をすっきり書けるので便利ですよね。
実装してて気になったので、備忘録をかねて

# ①基本

“`
条件式 ? 式1 : 式2
“`

“`
$lang = ‘En’;

$lang == ‘Jp’ ? $msg = ‘こんにちは’ : $msg = ‘Hello’;
print $msg;
‘Hello’
“`

# ②代入+基本
“`
代入式 + 条件式 ? 式1 式2;
“`
“`
$lang = ‘Jp’;

$msg = $lang == ‘Jp’ ? ‘こんにちは’ : ‘Hello’;
print $msg;
‘こんにちは’
“`

これなら式1、式2にそれぞれに式を書く手間が省ける

今まで①パターンで書いてたけど、次からは②のパターンを使用してみようっと
なにかの参考になれば、幸いです。

元記事を表示

そろそろaws初めてみよか#5~Cloud9環境での実行~

# はじめに

awsと戯れる会も第5回目(^^♪
Cloud9環境でちゃんと開発できるようCloud9のインスタンスにもlaravel環境をセットアップしましたが
肝心のlaravel実行まではできませんでした。
今回はこの肝心の部分の記事になります♪

以前の記事はこちらから
– [そろそろaws初めてみよか~まずは触れてみた~](https://qiita.com/imp555sti/items/08bef8d74985c2ea1f87)
– [そろそろaws初めてみよか#2~CodeStarによるコード修正からDeployまで~](https://qiita.com/imp555sti/items/9d04bfdbc3b89c1115f9)
– [そろそろaws初めてみよか#3~RDSとの接続~](https://qiita.com/imp555sti/items/bb820cd162f21bc06462)
– [そろそろaws初めてみよか#4~Cloud9環境の整備~](https://qiita.com/imp555sti/items/b293573835751123f0c

元記事を表示

Word Pressテーマ:STORKを使用したWebサイトに発生したエラーを解決するために行った処理

*プログラミング超初心者です。閲覧していただいた方にわかりやすい表現を意識していますが
 ①分かりにくい点
 ②間違っている点
ありましたら、ご指摘ください?

***それでは早速***
#STORKを使用したWebサイトに発生したエラーを解決する
##【症状】
###Webサイトの上部にエラーメッセージが表示される
メッセージ本文
   “Notice:Undefined variable:icon in /~ファイルパス省略~/wp-content/themes/jstork/library/shortcode.php on line 226”
##【状況】
・テーマをアップデートしたら発生した
・吹き出しを使用しているページに表示されるっぽい(←サイト運営者推察)

##【やったこと】
1. エラーメッセージを読んでみる
(ファイルパス省略)/library/shortcode.php の226行目にある”$icon”ってなんですの?の意味

2. (ファイルパス省略)/library/shortcode.php 226行目を確認する

元記事を表示

バラバラな例外をまとめてキャッチする PHP7.1〜

#前書き
まとめてキャッチできたら楽だよなって思い調べたら、PHP7.1以降なら使えるみたいなので書き方を載せておきます。

##PHP7.1以前の書き方
“`php
try
{
 //例外ごとにキャッチを書かなけばならない
}
catch (Exception1 $t)
{
echo $t->getMessage();
}
catch (Exception2 $e)
{
echo $e->getMessage();
}
“`
##PHP7.1以降の書き方
“`php
try
{
//キャッチ一つで複数の例外をまとめてキャッチできる
} catch (Exception1 | Exception2 $e) {
echo $e->getMessage();
}
“`

まとめて書くとコードもスッキリして、かなりいいと思いました。

元記事を表示

PHP 上級試験範囲 配列 個人的な備忘録

# 配列の展開と抽出

## list()

`list()`を使うと、配列の値を取り出して、複数の変数に順番に格納することができる。なお、スクリプト内のすべての配列をリスト形式で出力する関数ではない。

“`php:php
$array = array(2020, 1, 2);
list($y, $m, $d) = $array;

echo $y, ‘年’;
echo $m, ‘月’;
echo $d, ‘日’;

// 結果:2020年1月2日
“`

配列の要素数に対してlist()に指定した変数が少ない場合は、余った要素は無視される。逆に、配列の要素数に対して変数が多い場合は、余った変数には`NULL`がセットされる。

配列の要素を取り出す必要がない箇所では、変数の指定を省略することもできる。

“`php:php
$array = array(2020, 1, 2);
list(, $m, $d) = $array;

echo $m, ‘月’;
echo $d, ‘日’;

// 結果:1月2日
“`

## array_slice()

`array_slic

元記事を表示

CakePHP3で自作コンポーネントを作成、利用

## コード

### コンポーネントの作成

“`php:App/Controller/component/HogeComponent.php
[],
];
public $h

元記事を表示

xamppが立ち上がらない・・

# XAMPPが立ち上がらない…どうしよう

## 概要
ということで
自分のPC内で開発をしようと思ったときに、Xamppが立ち上がらなくて非常に困ったことがありました。
ぐぐっても記事がなかったので備忘録として、まとめます。

### エラー内容
以下現象の画像
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/45687/1a5efdc1-e4d0-7f35-119b-4361a47577bd.png)

え?なになに?
□□□□□□□□□□□□エラーメッセージ□□□□□□□□□□□□□□□□□□□□
Error: Apache shutdown unexpectedly.
This may be due to a blocked port, missing dependencies,
improper privileges, a crash, or a shutdown by another method.
Press the Logs button to view error

元記事を表示

PHPの自作関数で元の値を書き換えるには&で参照渡しする

## 参照渡し(元の値が書き換わる)

“`php:hoge.php
function hoge (&$argument) {
for ($i = 0; $i <= count($argument); $i++) { if ($argument[$i] == 0){ $argument = $argument + 1; }; }; }; ``` こういう配列の中身の数値が、 0のものには1を足すっていう関数があって、 ```php hoge($array); ``` 実行すれば、実際に配列の中身が変わります。 ## 値渡し ```php:hoge.php function hoge ($argument) { for ($i = 0; $i <= count($argument); $i++) { if ($argument[$i] == 0){ $argument = $argument + 1; }; }; }; ``` 仮引数の&がないと値渡しになるので、 ```php hoge($array

元記事を表示

PSR-4: Autoloader 読了

# PSRとは
– PSR(PHP Standards Recommendations)とは、[PHP-FIG](https://www.php-fig.org/)(PHP Framework Interop Group)が策定しているPHPコーディング規約を指す

# PSR-4: Autoloader
[PSR-4: Autoloader](https://www.php-fig.org/psr/psr-4/)

>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in RFC 2119.

– いくつか登場するキーワード(MUST, MUST NOT etc…)は、[RFC 2119](https://tools.ietf.org/html/rfc2119)で説明されて

元記事を表示

リレーションで特定のユーザーの記事を取得する手順

# はじめに
情報共有サイトにおいて、全てのユーザーが投稿した記事を取得することは簡単ですが、特定のユーザーが投稿した記事のみを取得したいとなると、リレーションが必要になり、初学者にとってはちょっと複雑になります。本記事では備忘録も兼ねてその手順をメモします。

## テーブルの作成
#### テーブル名を決める
テーブル名は複数形にします
今回は下記のように定義します。

– 記事を保存するテーブル名→news
– ユーザー情報を保存するテーブル名→users

#### マイグレーションファイルの作成
下記コマンドを打ちます

“`
$ php artisan make:migration create_テーブル名_table
“`
database/migrationsディレクトリ直下にテーブル名.php というファイルが生成されます。

#### マイグレーションファイルへの編集
newsテーブルに記事のタイトルと本文のカラムを加える場合、下記のように’title’と’body’を追記します。

“`
public function up()
{

元記事を表示

OTHERカテゴリの最新記事