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

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

UbuntuでPHPをインストールできない

## やりたいこと
デフォルトでインストールされているPHPが7.0なので、7.4に上げたい

“`
$ php -v
The program ‘php’ can be found in the following packages:
* php7.0-cli
* hhvm
Ask your administrator to install one of them
“`

## 事象
PHPのパッケージがaptのリストにないためアップデートできない

“`
$ sudo apt -y install php7.4
Reading package lists… Done
Building dependency tree
Reading state information… Done
E: Unable to locate package php7.4
E: Couldn’t find any package by glob ‘php7.4’
E: Couldn’t find any package by regex ‘php7.4’
“`

## 解決方法
add-a

元記事を表示

PHPファイルにCSSを読み込ませる

#はじめに
こちらでは問合せもあった事から、phpファイルにcssを読み込ませるやり方を説明できればと思います。
またHTMLとSCCを触られたことがあることを前提で進めさせていただきます。

#環境
CentOS
PHP 7.3.17
Apache
chrome

#やり方
みなさんHTMLとSCCを触られたことはあるとあるとおもいます。
今回は簡単にphpでecho表示させたものを色をつけただけのシンプルなものです。
やり方としてはhtml同様に読み込ませるだけです。

“`php:test.php “;
echo “赤色”;
echo “

“;
?>
“`

“`css:style.css
.red{
color:red;
}
“`
#まとめ
いかがだったでしょうかphpだからといって難しく考えることはないことがわかるとおもいます。

元記事を表示

Laravelで前処理、後処理を実装する

# 前提条件
[eclipseでLaravel開発環境を構築する。デバッグでブレークポイントをつけて止める。(WindowsもVagrantもdockerも)](https://qiita.com/toontoon/items/76fa7f8845b20776077c)
本記事は上記が完了している前提で書かれています
プロジェクトの作成もapacheの設定も上記で行っています

# 前処理、後処理をつくる
Laravelで前処理、後処理を行うにはMiddlewareを作成します

$nextの前に書く処理が前処理となります

$nextの後に書く処理が後処理となります

(1) /sample/app/Http/Middleware/GlobalSample.php作成

“`GlobalSample.php

元記事を表示

PHP Laravel 復習

#前提
人の脳は2日で73%忘れると聞いたため学んだことを復習していきます。

#本題

“`PostController.php
return view(‘posts.index’, [‘posts’ => $posts]);
“`
viewメソッドの第一引数には、ビューファイル名を渡す。

‘posts.index’とすることで、resources/views/postsディレクトリにある、indexという名前のビューファイルが表示される。

viewメソッドの第二引数には、ビューファイルに渡す変数の名称と、その変数の値を連想配列形式で指定。

ここで、’posts’というキーを定義することで、ビューファイル側で$postsという変数が使用できるようになる。

また、Laravelでは、それ以外のコードの書き方でも変数をビューに渡すことが可能。

1、withメソッド

“`PostController.php
return view(‘posts.index’)->with([‘posts’ => $posts]);
“`
viewメソッドにwithメソッドを繋げて、wi

元記事を表示

php:7.3-fpm-alpineで、モジュールのインストール

# phpのモジュールのインストール
composerを実行したときに、socketsがないとのエラーが発生しました。
エラー解決の道のりで学んだことを共有します。
## 筆者の使用している環境
・docker
・php:7.3-fpm-alpine
## error内容
“`
composer require linecorp/line-bot-sdk
“`
のコマンド実行時にエラーが発生しました。

“`
/work # composer require linecorp/line-bot-sdk
1/3: https://packagist.jp/p/provider-2020-04$0debce5054869c0cc3060fd8316edffa3035f0642bf192c9e9cf9724d7429a24.json
2/3: https://packagist.jp/p/provider-latest$a6fa0af3f924c039609f8f1f06ac662b10318aa68e1148be6b1bdb31361c8

元記事を表示

SymfonyでDQLを拡張してMysqlの関数を使えるようにする

# 概要
Symfony + EC-CUBEでDQLを拡張する方法を学んだのでまとめました。

# 動作確認環境
“`
EC-CUBE 4.0.3
Symfony 3.4.26
PHP 7.3
MySQL 5.7
“`

# DQLの拡張方法
## DoctrineExtensionsライブラリを導入する
今回は、キーワードで検索時に照合順序を指定して検索することが課題でした。
なので、MysqlのCOLLATEが利用できればよかったのでDoctrineExtensionsライブラリを利用しました。他にもライブラリが存在するでしょうが、用途や実現したいことによって使い分ければよいと思います。

“`
composer require beberlei/doctrineextensions
“`

使いたい関数があるかどうかは、githubを参照してください。
[DoctrineExtensions](https://github.com/beberlei/DoctrineExtensions)

## EntityManagerに利用したいMySQLの関数を設定する
クエリを生

元記事を表示

Raspbianにaptでnginx+PHP7.3を導入

# 導入経緯
Raspberry Pi4を購入してWebサーバーを構築します。
Apacheのほうが慣れているのですが、nginxに乗り換えたいと思ったので実行してみました。

# nginxのインストール
最近はapt-getよりaptを使うことが多いですので、説明もaptで統一します。

まずは、「nginx」のインストールコマンド
`$ sudo apt install nginx`

「nginx」の起動
`$ sudo systemctl start nginx`

nginxが起動したら、ブラウザからRaspberry PiのIPアドレスにアクセスするか、Raspberry Piのブラウザからlocalhostにアクセスしてnginxの初期ページが閲覧できることを確認しましょう。

# PHP7.3のインストール
PHPは今回「7.3」を使います。
「php7.3」のインストールコマンド
`$ sudo apt install php7.3 php7.3-fpm php7.3-mbstring php7.3-pdo php7.3-gd php7.3-xml php7.3-m

元記事を表示

PHPの例で学ぶインターフェイスって何?

現場でPHPのコードを見る中で、インターフェイスが実装されているケースがあるのですが、初心者に毛が生えたレベルのエンジニアの私には、よく分かっていないので、まとめてみました。

まずは公式よりの引用↓

0.公式よりの引用
>
>オブジェクトインターフェイスにより、あるクラスが実装する必要があるメソッドの 種類を、これらのメソッドの実装を定義することなく、指定するコードを作成できる ようになります。
>
インターフェイスは通常のクラスと同様に定義することができますが、 キーワード class のかわりに interface を用います。またメソッドの実装は全く定義されません。
>
インターフェイス内で宣言される全てのメソッドはpublicである必要があります。 これは、インターフェイスの特性によります。
>
コンストラクタ をインターフェイスで宣言できることに注意して下さい。 これはたとえばファクトリで使う場合など、コンテクストによっては役に立ちます。
>

[公式より引用] (https://www.php.net/manual/ja/language.oop5.interfac

元記事を表示

LaravelでJSONを返す(Ajax)

# 前提条件
[eclipseでLaravel開発環境を構築する。デバッグでブレークポイントをつけて止める。(WindowsもVagrantもdockerも)](https://qiita.com/toontoon/items/76fa7f8845b20776077c)
本記事は上記が完了している前提で書かれています
プロジェクトの作成もapacheの設定も上記で行っています

# Controllerにメソッド追加
(1) /sample/app/Http/Controllers/SampleController.phpにjson1メソッド、json2メソッドを追記

“`
public function json1(Request $request)
{
return view(‘sample.json’);
}

public function json2(Request $request)
{
$data = [
‘a’ => $request->input(‘a’),

元記事を表示

Laravel Authのログイン認証の中身

今回LaravelのAuthのログイン時の動きを調査していくのですが、
主に処理の流れの中でどんなメソッドが呼ばれて認証が行われているのかを見ていければと思います^^

> 今回はAuthの事前準備はスキップし、
usersテーブルを作成するためのマイグレーションが完了したところから始めます。

** ログイン画面**
 この後「login」ボタンのを押下した後の流れを追っていきます。

スクリーンショット 2020-05-09 21.27.13.png

### LoginController.php

“`php

class LoginController extends Controller
{

use AuthenticatesUsers;

/**
* Where to

元記事を表示

Yii1.1でCInlineFilterを使ってControllerにフィルター処理を実装する

## はじめに
WebアプリケーションのMVCフレームワークだと、各コントローラーのアクションの実行前後で、共通処理を行う場面がよくある。
この場合は下記のように、フレームワーク側で専用のライフサイクルメソッドが提供されていることが多いだろう。

* beforeAction
* afterRender

Yiiの場合も上記のようなメソッドは存在しますが、
それとは別に、フィルターという機能で、フィルタリンング処理を行う事が可能だ。
今回はControllerクラスでフィルターの機能の実装例を紹介する。

## Yiiとフィルター
その前にどのような仕組みでこのフィルター機能が各コントローラーのアクションの前後で実行されているかを説明する。
Yii1.1.には[CFilter](https://www.yiiframework.com/doc/api/1.1/CFilter) クラスとがあり、このクラスを継承したサブクラスとして、以下が提供されている。

* [CAccessControlFilter](https://www.yiiframework.com/doc/api/1.1

元記事を表示

Laravel で環境変数を用いて Routing 設定を切り替える

Laravel では環境変数を用いてアプリケーション内の設定を更新することができます。
この記事では Routing 設定を環境変数を用いて切り替える方法について書きます。

## 動作環境

– PHP 7.2.26
– Laravel 6.9.0

## TL;DR

– Controller または Middleware に `config()` の値を用いた条件分岐を書くことで実現可能。
– routes/web.php に条件分岐を書くとテストが困難。

## シチュエーション

アプリケーションの何らかの機能が廃止され、ある特定のパスへのリクエストを別のパスにリダイレクトさせたいケースについて考えます。
このリダイレクトを行うかどうかは環境変数に応じて決定されるものとします。

“`php
// 廃止されるパス
Route::get(‘/old/resources’, ‘OldIndexController@index’);

// リダイレクト先にしたいパス
Route::get(‘/new/resources’, ‘NewIndexController@index’)

元記事を表示

PHPでFizzBuzzの関数の作成

##はじめに
この記事はPHPの学習を始めた方が関数の学習で行う
FizzBuzzの関数の作成について書いていきます。

##FizzBuzzの仕様
・数値が3の倍数の戻り値は”Fizz”
・数値が5の倍数の戻り値は”Buzz”
・数値が3の倍数であり5の倍数でもある場、戻り値は”FizzBuzz”
・上記のどれも満たさない場合は、その数値自体を戻り値にする

##FizzBuzzの関数の使い方
・最初の下記の1行を記述

“`
$max = 100;
“`

・1から $max までのループを作り、FizzBuzzの関数を実行
・FizzBuzzの関数の戻り値を表示

##PHP

“`test.php

元記事を表示

PHPのarray_splice関数の挙動を確認する

#array_splice関数とは
`array_splice関数`は、配列の任意の場所に要素を`追加`したり、既存の要素を`置き換え`たり`削除`したりといった処理を行う。

#array_splice関数の構文

“`.php
array_splice ( array &$input , int $offset [, int $length = count($input) [, mixed $replacement = array() ]] ) : array

&$input //操作対象の配列
$offset //要素の抽出開始位置
$length //取り出す要素数
$replacement//削除個所に挿入する配列

“`

##array_splice関数を使ってみる

“`daihyou.php
$data = [‘本田’, ‘長友’, ‘香川’, ‘長谷部’, ‘遠藤’,];
print_r(array_splice($data, 2, 3, [‘久保’, ‘中村’, ‘室谷’]));
//Array ( [0] => 香川 [1] =

元記事を表示

PHP CodeSniffer(phpcs)のチェックを特定メソッド・関数・行のみ無効にする

> ある PHP クラスを継承(`extends`)した際に、メソッドを乗っ取る(オーバーライドする)必要がありました。しかし、コード規約を `phpcs –standard=PSR2` で指定したところ、そのメソッド名がコード規約に準拠していないため、PHP_CodeSniffer(`phpcs`)から叱られます。
>
> 意図的に間違えている(PSR-2 に準拠できない)ので、その**特定のメソッドのみエラーを無視させたい**。

“`text:PSR-2をstandardに設定した例
———————————————————————-
FOUND 8 ERRORS AFFECTING 8 LINES
———————————————————————-
26 | ERROR | Method name “MockPhpStream::buffer_filename” is not in
|

元記事を表示

PHPの基礎 勉強メモ

#コードを書いてる際に気になったこと。

##session_start
新しいセッションを開始、あるいは既存のセッションを再開する

###参考
https://www.php.net/manual/ja/function.session-start.php

##filter_input
指定した名前の変数を外部から受け取り、オプションでそれをフィルタリングする

###返り値
成功した場合は要求された変数の値、フィルタリングに失敗した場合に FALSE、 あるいは変数 variable_name が設定されていない場合に NULL を返します。
フラグ FILTER_NULL_ON_FAILURE が指定されている場合は、変数が設定されていなければ FALSE、 フィルタリングに失敗したら NULL を返します。

###参考
https://www.php.net/manual/ja/function.filter-input.php

元記事を表示

本日出版される本をまとめて表示するサイトをラズパイサーバーで公開する

##はじめに
昨今の新型コロナ騒動で時間が有り余っていたので、以前より構想していた「本日出版される本のデータを集めて一覧で表示するサイト」を勉強を兼ねて作り、ラズパイの自作サーバーに実装しました。

http://mono-today-book.work/today_book.php

github
https://github.com/mono-taro/today_book

####作る動機
毎日約200冊の本が新刊として出版され、月刊では約6000冊の本が出版されていますが([日本著者販促センター](http://www.1book.co.jp/000076.html)より)、そのうちの多くの本(特に自費出版)は書店に並ぶことがないか、並んだとしてもすぐに返本されてしまうことが多いので、新刊図書で実際に書店等で目に触れる本はほんのひとにぎりで殆どの本は人目に触れないまま埋もれてしまっています。
(ここらへんの事情はこちらのブログ等が参考になります。
[発売したはずの本が書店に売ってない!たった一つの明確な理由](https://note.com/suzukakeshin/n/n

元記事を表示

PHPで初めてのWebアプリケーション開発 Laravelの導入 備忘録4 

#前提
PHPを使ったWebアプリケーションの開発知識が必要になったので、開発過程の備忘録、知識のインプット・アウトプットを目的としている。

#備忘録4 目次
– Laravelの導入
– Laravel導入手順

#Laravelの導入
###開発環境
– macOS Catalina 10.15.3
– PHP 7.3.11

###選定理由
– 比較的新しい
– MVCフレームワークについて勉強したかった
– 学習コストの低さ

##Laravel導入手順
– PHPのインストール
– Composerのインストール
– Laravelのインストール
– プロジェクトの作成とアプリの実行

###PHPのインストール
Macにデフォルトで入っているPHPだったので、Homebrewを使ってインストール。
参考にした記事にHomebrewのインストール方法も載っています。

参考にした記事→[「HomebrewでPHP7.2を導入する」](https://qiita.com/saken649/items/b5830de62211b600f7ee)

###Composerのダウ

元記事を表示

SQLから当日分のデーターを入手したい時

ポートフォリオ作成時に当日投稿された数を表記する機能を実施しようとして苦戦したので、忘備録として残しておく

やりたい事はその日に投稿された投稿数をカウントしてその数を表示するという物

DBに保存されている投稿日時はDATETIME型で保存されている。
ならば当日の日付と投稿日時の日付が同じという条件付けでいけるだろうと安易に以下のコードを作成

カラム:creat_time DATETIME型

$counts = $db->query(‘SELECT COUNT(*) AS cnt FROM posts WHERE create_time = CURDATE()’);
$todayCount = $counts->fetch();

反映されない・・・・・・

何故だ・・・と2時間ほどネットの海を彷徨っていると、
DATETIME型は「2020-05-08 21:33:54」のように日付と時刻までを取得する
それに対してCURDATEは「2020-05-08」と時刻は取得されない。という情報を発見

もうちょい調べるとCURDATEではなく日付を直接入力した場合、
 2020

元記事を表示

Laravelで.envファイルが反映されない時

Illuminate\Database\QueryException : SQLSTATE[HY000] [2002] Connection refused..

などのエラーが出た際、.envファイルがうまく反映されていないことが原因の可能性があります。

## .envファイルが反映されない時の対処法

キャッシュをクリアすることで.envファイルが正しく反映されるようになります。

“`
php artisan cache:clear
“`

コンフィグの設定もコマンドでキャッシュをクリアできます。

“`
php artisan config:cache
“`

元記事を表示

OTHERカテゴリの最新記事