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

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

Laravelでmake:bladeでbladeを作成するコマンドの自作

Laravelではコントローラーなどはmakeコマンドでテンプレートから作成することができますが、
bladeのmakeコマンドは用意されていないため自作してみました。
「php artisan make:blade hoge」でhoge.blade.phpを作成できるようにします。
確認したLaravelのバージョンは6.5.1です。

# コマンドの作成
まずmake:blade用のコマンドを作成します。

“`
php artisan make:command MakeBladeCommand
“`

app/Console/Commands下にMakeBladeCommand.phpが作成されます。
このファイルを以下のように書き換えました。

“`app/Console/Commands/MakeBladeCommand.php

元記事を表示

学習メモ JSONの基本とjson_encode / json_decode

#JSON
JSONとはデータ形式の一つ。
JavaScript Object Notationの略。

データを扱う際、誰が書いても同じであるように、また機械が判別できるように書き方のルールが決まっている。HTMLやCSVなども1つのデータ形式であり、JSONもその一つに含まれる。

###JSON形式

“`
{
“user”: “Tom”,
“age” : 18,
“gender”: “male”
}
“`

##json_encodeとjson_decode
今、PHPについて学習中だが、PHPではデータをJSON形式に変換したり、JSON形式にデコード(変換されたものから復元)できる。

###エンコード:
ある形式のデータを一定の規則に基づいて別の形式のデータ
に変換すること。

###デコード
変換されたデータを逆に、復元すること

例:

“`
//配列
menu_array = [‘coffee’ => ‘menu1’
‘tea’ => ‘menu2’
‘juice’ => ‘menu3’

元記事を表示

【PHP】SESSIONも危ない!セキュリティを見直そう。

## 初めに
みなさんは、

“`php
session_start();
“`

だけでセッションを利用していませんか?もし、この一行だけでsessionを使用しているのなら、直ちに変更したほうがいいでしょう。
## どこが危ないのか
セッションの仕組みをもう一度確認してみましょう。
まず、サーバーが初アクセスのプレイヤーにクッキーでIDを作成し保存します。
そのあと、セッションIDをアクセス毎に確認し、保存データからHTML等を生成します。

ここで注意する点が、***Cookieでsessionidを保存する***ということです。
Cookieとは、クライアント側で変更可能(ほとんどのブラウザで可能)なため、友人のsessionidを盗めばログインもできてしまいますし保存データもすべてアクセスできてしまいます。

つまり、ほとんどのサイトがsessionにログインデータを保存しているので、ユーザーを識別するためのsessinidが盗まれてしまえば保存されているデータも盗まれるということになりますし、メモサイトであればメモのデータを変更さえ削除さえできてしまいます。

簡単な事

元記事を表示

ディレクトリ階層深めのLaravelアプリケーションでCircleCIの設定をする

ディレクトリ構成をミスってしまったアプリケーションでCircleCIを導入するのにだいぶハマってしまったので、メモとして残します。

### 環境情報
– PHP 7.2
– Larave l5.6
– Github
– CircleCI 2.0
– mysql 5.7

### アプリケーションのディレクトリ構成
このアプリケーションを作る際に、初めてLaravelをDockerを使って環境構築をしたため、2つネストの深いディレクトリ構成で作ってしまった。この構成がおかしいと気付いた時には、時すでに遅し。気持ち悪いが、特に不便なこともなかったので、この形で進めましたた。

“`
app
|-.circleci
├─ src
├─ hogehuga
└─ app
└─ artisan
└─ vendor
└─ tests
└─ phpunit.xml
└─ composer.json
└─ composer.lock
“`

### 問題
CIでテス

元記事を表示

51歳からのプログラミング 備忘 初心者が作る移動管理アプリ ベースプログラム

android端末の移動状態を管理するシステムの、ベースとなるプログラムを作ってみました。セキュリティなど問題は多いと思うんだけれど、今の僕に作れる(初心者が作る)簡単シンプルなプログラムを目標に作ってみました。車両管理や営業管理など、事業場外活動の状況を確認する目的で作成してます。個人利用なのでこれをカスタマイズして必要な機能を盛り込めば十分かな?

なんか問題ありそうならアドバイス頂けますと幸いです!
ここまで来るのにめっちゃ時間がかかった!

#Over View
このシステムは、androidアプリとwebアプリで構築してます。androidは常駐アプリにし、1分毎に位置情報を取得し、おおよそ10分毎に発信し、webアプリでデータベース登録し、移動状況を表示するという感じです。このシステムはベースプログラムなので、複数端末には対応してませんし、位置情報の利用もMap表示だけです。なお送信はGET送信としてます。

androidアプリはapi28以上を想定してます。
webアプリはLaravelです。

##ファイル構成

**android**

|ファイル名|説明|
|-

元記事を表示

【Laravel】DBクラスの利用

# DBクラスとは
Laravelに装備されている
最もシンプルなデータベースアクセス機能です。
このクラスにはデータベースを利用するための
様々な機能が用意されています。

# DB::select
DBクラスにある静的メソッドで
SQLクエリを実行し結果となるレコードを取得するものです。
メソッド名から想像がつくように
***select文***を実行するものと考えてください。
以下のように呼び出します。

“`php
$変数 = DB::select( 実行するSQL文 );
“`

# DB::insert
レコードの追加を実行します。
***insert文***を実行するものと考えてください。
戻り値を設定する必要はありません。

“`php
DB::insert( クエリ文, パラメータ配列);
“`

# DB::update
レコードの更新を実行します。
***update文***を実行するものと考えてください。

“`php
DB::update( クエリ文, パラメータ配列);
“`

# DB::delete
レコードの削除を実行します。
***d

元記事を表示

Laravelのイベントまとめる

# はじめに
Laravelでイベント機能を実装する必要がありそうだが、
全くさわったことがないため、使い方を一から整理する。

イベント(リスナー)に実装する内容は本来ならコントローラーでも実装可能です。
ただ、コントローラーはどうしてもコード量が増えてしまうので、
なるべくコード量を減らしたいです。
そういった意味ではリスナーに記載することでコードがスッキリします。

また、コントローラーであれば複数処理をまとめて同じクラスに記載することとなりますが、
リスナーでは処理毎にクラスが分かれるので、
後々のリファクタリングも楽になります。

# イベントとは
任意のタイミングで別の処理を実行させます。
例えば、
ユーザー登録やLoginなどのタイミングでイベントを発行して、メールでの通知を実行させるなど。

# やること
・イベントとリスナーの定義
・イベントとリスナークラスの作成
・リスナーの実装

# 現状の確認
### 現状のイベントとリスナーの確認
app/Providers/EventServiceProvider.php内の
listenプロパティにてイベントと対応するリス

元記事を表示

マージリクエストしようとしたら以前プッシュした別ブランチと統合されてしまった

プログラミングを初めて二か月ほどの者です

二週間ほど前にプッシュしたブランチと今回プッシュしたブランチがマージリクエストしようとしたら、統合されてしまいました

以前プッシュしたものは今回いらないものなので、なんとか切り離したいのですが、解決方法が分かる方は教えていただきたいです。

元記事を表示

完全未経験からWebアプリ開発の仕事についた話

###エンジニアとして働いて、5日目が経ちました。
業界未経験からエンジニアとして就職してから1週間が経ったので、現在どんなことをしているか、業務的な知識も含めメモとして書き出しておきます。

###開発環境および使用ツール
– PHP 7.2.23
– Laravel 6.0.3
– Docker
– Sourcetree
– Sequel pro
– Slack
– Trello
– Kitematic
– Bitbucket
 etc…

###いまやっていること
Webアプリケーション開発で、サーバーサイドの実装をしています。
Trelloで自分が担当するカードを見て、Postmanを叩いて、削除の機能をつけたり、更新したくない値にバリデーションを書いたりなど。
RailsでMVCの知識は叩き込んでいたので、それをベースに処理を見よう見まねで実装していってます。

###今週躓いたところ
#### まずPostmanの使い方がわからない
いままでフロントありきで開発をしてきていたので、Postmanが何をしているか全くわからなくて、初日は存在しないURLを入力した

元記事を表示

値渡しと参照渡し

値渡しと参照渡しについての学習メモ

##値渡し
・変数のコピーを渡す
・変数の中身を書き換えても呼び出し元には影響しない

PHPでは通常、値渡しを使う
引数で指定した変数の値はコピーされて別の変数として仮引数で値を受け取れる。

##参照渡し
・変数の置いてある場所を示し参照してもらう
・変数の中身を書き換えると呼び出し元の変数の中身も書き換わる。

メリット:
高速に動作する(らしい)

デメリット:
多用するとプログラムの流れを追いかけるのが難しくなる

注意点:
定数には使えない

書き方:
&をつける

“`php
function 関数(&$引数)
“`

元記事を表示

WordPress5.3で勝手に画像が縮小されるのを防止!

# ええっ

なんてことを. 自慢の4K画像を上げたら突然縮小されるようになってしまった?

# 解決法

“wp-admin/includes/image.php“ の243行目にある

“`
$threshold = (int) apply_filters( ‘big_image_size_threshold’, 2560, $imagesize, $file, $attachment_id );
“`

をコメントアウトしましょう. これで縮小されないはず?

Updates to Image Processing in WordPress 5.3

https://core.trac.wordpress.org/browser/trunk/src/wp-admin/includes/image.php?rev=46565#L226

元記事を表示

学習のアウトプット #1

#はじめに
なぜQiitaでの投稿を始めたかというと、現在PHP/Laravel絶賛勉強中なのですが教材を見てコードを書いてるばかりで全然アウトプットしておらず、学習のしたことがイマイチ身についてないなぁと感じたからです。

早速アウトプットしていこうと思うのですが、今回はOSについて書こうと思います。

ある時プログラミングを学習していて、**OS**って言葉が目に付いて「あれ、OSってなんだっけ??」と思ったためです。

#OSとは
OSとはオペレーティングシステムの略で、PCを管理・操作するシステムです。
よく聞くのはwindows,macOS,linuxだったり、スマホのiOSやAndroidもOSです。

OSがないとPCは動きません。
昔のゲームに例えるとゲーム機本体があってもソフトがないからゲームできないみたいな感じですかね。

#OSの機能
– **入出力の制御**
キーボードをどのキーを何回押したか、マウスをどの方向にどれだけ動かしたか、などのキーボードやマウスの入出力の制御やモニターの画面表示の機能はOSが担っています。

この機能によって画面にエディタが表

元記事を表示

【Laravel5.8】複数のデータベースに接続するときは全てのモデルに`$connection`を書こう

先日の[Eagerロード先テーブルは必ず主キーもSELECTしないといけない](https://qiita.com/rana_kualu/items/03087d60efd016fb8c4a)って記事を見るとわかりますが、Eagerロードでは複数テーブルを結合するのにJOINを使わず、データを別々に取ってきて後から合体させています。

つまり、これは異なるデータベースのテーブルに疑似リレーションを張れるのでは?

“`php:テーブルA
class TableA extends Model{
// テーブル名
protected $table = ‘table_a’;

/**
* リレーション
* @return BelongsTo
*/
public function tableb()
{
return $this->belongsTo(TableB::class, ‘b_id’, ‘id’);
}
}
“`

“`php:別DBのテーブルB
class TableB extends

元記事を表示

CodeIgniterに独自のログレベルを追加する方法

# 記事作成の経緯

Codeigniterには `log_message()` というログファイルにメッセージを記述する方法がある。

Error Handling
https://codeigniter.com/user_guide/general/errors.html?highlight=log_message#log_message

だが、この仕様が以下の問題を抱えている。

– `$config[‘log_threshold’]` の値により出力されないログがある
(1に設定した場合はERRORしか出力されない)
– INFO, DEBUGにはCodeIgniter自身のログも出力されて読みづらいので、`$config[‘log_threshold’] = 1` としたい。
– 用意されているものが3つ(ERROR, DEBUG, INFO)しかなく、出したいログに相応しい名前を選べない
※例えばメールの送信結果だったら「EMAIL」とか、管理画面のログなら「MANAGE」とかにしたい。

そこで、簡単にカスタムログを出力する方法まとめた。

# 1. Logクラ

元記事を表示

PHP→Pythonの呼び出し時に’ascii’ codec can’t encode characters in position xx-xx: ordinal not in range(128)

Pythonでスクリプト書いて、PHPから呼び出したい。
Python側をコンソール上で動作確認して、
PHPでフロント作って呼び出そうとしたらこれ

“`
‘ascii’ codec can’t encode characters in position 28-32: ordinal not in range(128)
“`

ascii?コンソール上で動くけど?
locale変更してもダメ

試しにpython実行コマンドで

“`
LC_ALL=\”ja_JP.utf8\” python test.py
“`

のように定義したら動いた。

分からんわこんなん。

P.S. 上司ありがとう。

元記事を表示

laravel サーバ環境構築基礎

少なくとも一つのフレームワークを覚えようと思って、複数のフレームワークの中ララベルに興味ありました。
いろいろ調べたところ、テスト環境の情報が多い、サーバ環境構築の情報が少ない、バラバラです。
一応、苦戦二日間やっと構築成功しました、以下に纏めます。共有致します。

この手順で恐らく一発でできそうな感じ。

OS CentOS 6.10 32bit
php5.6.40
laravel5.4
mysql5.6/40
Apache2.2.15

■ composer インストール
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
composer

■ laravel インストール
composer global require “laravel/installer”

■ プロジェクトを作成
composer create-project –prefer-dist laravel/laravel laravelapp

(laravelapp プロジェ

元記事を表示

docker-composeで簡単に環境構築Apache2.4+PHP7.1+PostgreSQL9.6

# 仕事で上記の環境が必要になったので~~もうやりたくない~~備忘録として残す

## 環境

– Mac for Docker
– Apache2.4
– PHP7.1
– PostgreSQL9.6

## 構成

ディレクトリ構成はこんな感じです。

![スクリーンショット 2019-11-15 16.19.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/293438/2993d77c-06f3-6e2c-fc3a-61db24de6bae.png)

## Dockerfile

`docker/web` に `Dockerfile` という名前のファイルを作成し以下の内容で記述

> PHPのバージョンを変えたければFROMの `php:7.3-apache` という風に変えればいけるはず。

“`Dockerfile:docker/web/Dockerfile
FROM php:7.1-apache

COPY ./php.ini /usr/local/etc/php/

RUN s

元記事を表示

mb_strimwidth in PHP

# convenient build-in function

テキストデータを一定の文字数で[…]したい時に便利。
こういうのがあるのは知りませんでした。
勉強不足ですね。

“`php
$text = “春はあけぼの。やうやう(ようよう)白くなりゆく山ぎは(やまぎわ)、少し明(あ)かりて、紫(むらさき)だちたる雲の細くたなびきたる。 春は、明け方(あけがた)が良い。 だんだん、白くなっていく山ぎわが、 少し明るくなって、紫がかった雲が、細くたなびいているのが、”;

echo mb_strimwidth($text,0,120,”…”,”UTF-8″);

//春はあけぼの。やうやう(ようよう)白くなりゆく山ぎは(やまぎわ)、少し明(あ)かりて、紫(むらさき)だちたる雲の細く…
“`
http://php.net/manual/en/function.mb-strimwidth.php

元記事を表示

Laravelでartisanコマンドを自作してCommandを体感する

Laravelを勉強してて、php artisan という不思議なコマンドを何気なく使っていましたが
これを自作できるということで、自作した勉強メモです。

## artisanコマンド一覧を見てみる

まずはどんなコマンドがあるのか見てみることにしました。

“`
php artisan list
“`

このコマンドを使うことで、どんなコマンドが使えるのか、またそのコマンドの説明が表示されます。

“`
Laravel Framework 6.0.4

Usage:
command [options] [arguments]

make
make:channel Create a new channel class
make:command Create a new Artisan command
make:controller Create a new controller class
make:event Create a new event class
make:excep

元記事を表示

dockerイメージphp:7.2-apacheでImageMagickをインストール

## インストールのイメージ
ImagicをインストールするためのImageMagickのインストールが必要。
まずPHPへImageMagicのインストールを行い(※dockerfileへ記述)、その後、Imagicのライブラリをcomposerに追加する。

### インストール方法

php側でimagemagickとimagickのインストールが必要なため、dockerfileに下記を追加。

“`
 && apt-get update && apt-get install -y imagemagick libmagickwand-dev \
 && pecl install imagick \
 && docker-php-ext-enable imagick \
“`

これでbuild後、docker-compose up -d !!!ッッッターーーーーン!!!!

Linux側で、下記コマンドを叩いてImagicのライブラリを追加。

“`
$ composer require spatie/pdf-to-image
$ composer require spat

元記事を表示

OTHERカテゴリの最新記事