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

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

ほぼ未経験Webエンジニアが入社半年でしたことまとめ(2020/11)

#言語

・PHP
・HTML
・JavaScript
(・MySQL)

#やったこと

・Web開発用の開発環境構築(XAMPP設定など)(なんだかんだ3,4回した気がする)
・変数や配列など基礎的な内容を理解
・Ajax勉強
・オブジェクト指向の勉強
・セキュリティ少し学んだ
・DBについて少し学んだ
・より良いコードが書けるようにリーダブルコードを読んだ
・リーダブルコードを英語で読みたいと思い、原書を購入(まだ読んでない…)
・mapboxのチュートリアル的なページを確認
・HTMLとJavaScriptにmapboxAPIを組み合わせて、マップ情報を活用したHTMLファイル作成(指定場所の面積計算など)
・エンジニア数十人が書いたエッセイ集みたいな本を買って読んだ
・メルカリ創業の本を読んだ(サクセスストーリー感があって非常に面白かった)
・kotlinとswiftをすこし内容みてみた
・UdemyでswiftとJavaScriptのコース(英語)を受講(現在進行中)

#感想
・幅広く興味を持っていい経験ができた気がする
・mapboxに触れられたのはよかった
・Udem

元記事を表示

composer requireがメモリ不足で失敗しないために

## この記事の目的

パッケージ間の依存関係の解消に
メモリを多く消費するパッケージ ( 筆者が遭遇するケース:[Larastan](https://github.com/nunomaduro/larastan) ) を、

デフォルトの設定 ( 通常使用時には上限128MB[php.ini],
Composer使用時には上限1.5GBまで拡張される ) のまま、

インストール(composer require)を試みると、
次のように標準エラー出力されます。

“`sh
Fatal error: Allowed memory size of 1610612736 bytes exhausted
(tried to allocate 4096 bytes)

Check https://getcomposer.org/doc/articles/
troubleshooting.md#memory-limit-errors
for more info on how to handle out of memory errors
“`

エラー文に書いてある[Composer公

元記事を表示

[Laravel] コードをコミット時に自動整形する

#やりたいこと
複数人で開発時に、フォーマットを統一したい。
自動整形するやつ入れても実行し忘れるので、コミットのタイミングで何も考えることなく整形できるようにしたい。

#やりかた

`brainmaestro/composer-git-hooks`というパッケージを使うと、git hook(`gitの特定タイミングで色々できる`)を簡単に使える

そして`friendsofphp/php-cs-fixer`を使うと、コードの規約違反を指摘/修正してくれる

まずはインストール

“`bash
composer require –dev brainmaestro/composer-git-hooks
composer require –dev friendsofphp/php-cs-fixer
“`

つぎに設定
`composer.json`の`extra`に`”hooks”`を追加
`pre-commit`をフックに、`php-cs-fixer`を使って自動フォーマットする。

“`composer.json
“extra”: {
“laravel”:

元記事を表示

Intercomの会話データぜんぶ抜く

# TL;TR

https://gist.github.com/YoshiteruIwasaki/3edd71eb1d968fcfa4c56ef7a0bcfbd8

からファイルをダウンロードする。

` ` の箇所を書き換える。

IntercomのPHPのSDKを同じ階層にcomposer経由でダウンロードする。

“`
composer require intercom/intercom-php php-http/guzzle6-adapter
“`

以下のコマンドで実行する。

“`
php index.php
“`

# 解説

IntercomのAPIを純粋に片っ端から叩いてデータを集めてきて最後に配列にして1行ずつCSVに書き出しています。

Intercomの画面上から会社やユーザー情報はCSVエクスポートできます。
会話のデータもエクスポートできますが、過去2年分でサマリーのみになるため、細かな会話のやり取りを出力するにはAPIを使う方法しかありません。(個々の会話の画面から plain text でダウンロードするボタン

元記事を表示

PHPで敷居の高い掲示板作ってみた

# はじめに
 前回、[PHPで敷居の高い掲示板を作ってみた ~概要編~](https://qiita.com/mimuro_syunya/items/72a4f943c9b3bc88365c)を書いてみたんですが、もっと詳しく書きたくなってきました(^^♪
なので、シリーズ化しようと思うのですが、項目がたくさんになりそうなので、リンクがまとまった記事を作っておきたいと思います。

# この記事について
 この記事では、基本的にPHPのみによる「敷居の高い掲示板」の作り方を書いていこうと思います。敷居の高い掲示板とは、

メールアドレスの認証が絡んだ掲示板

であって、会員登録とかログインとかをせず投稿出来る手軽さと、管理者による投稿内容の管理がしっかりできるWEBアプリケーションです。

# おしながき
以下に、各記事のリンクを張っていきます。ちなみに、0から100まで説明する気は無いです。重要だと思う事と、自分で考えた仕組みの中で記事にしておきたいもののみを書いていきます。

全部できる気がしませんが、気長に頑張りたいです(;^ω^)

1. 概要編・・・[PHPで敷居の高い掲示板

元記事を表示

可変変数と可変関数 (PHP)

## 可変変数
変数を要いて、変数を動的に変える。

“`php
class ClassName
{
private $hoge = ‘ほげ’;
private $fuga = ‘ふが’;

public function say(string $name = ‘hoge’)
{
echo “{$this->$name}です。よろしく。”;
}
}

$class = new ClassName;
$class->say(‘hoge’); // ほげです。よろしく。
$class->say(‘fuga’); // ふがです。よろしく。
“`

## 可変関数
動的に呼び出す関数(メソッド)を変える。

“`php
class ClassName
{

private $hoge = ‘ほげ’;
private $fuga = ‘ふが’;

public function say(string $name = ‘hoge’)
{
$method = “say$name”;

元記事を表示

paiza攻略 よく使うもの一覧(スキルチェックD〜Cランク) ~PHP~

## はじめに
この記事ではpaizaのスキルチェック(PHP)で僕がよく使ったものを一覧にしてまとめています。
主にDランク・Cランクの問題を解くことを想定していますので、参考になれば幸いです。
また間違っている箇所などありましたらご指摘いただけると幸いです。
随時更新していく予定です。

## 基本系

#### trim
文字列の先頭および末尾にあるホワイトスペースを取り除く。
改行された値をそれぞれ「配列」にするために使う。
※paizaではほぼ無条件で入れると良い。

“`php:PHP
$input_line = trim(fgets(STDIN));
“`

#### explode
” “で指定したもの(ここでは半角スペース)で文字列を分割して「配列」にする関数。

“`php:PHP
$input_line = fgets(STDIN);
//$input_line -> “250000 3″
$arr = explode(” “,$input_line);
//$arr -> [“250000″,”3”]
“`

###

元記事を表示

laravelで画像を再度指定せずに編集可能な機能を作成

初投稿です。これからプログラミング学習のアウトプット始めていこうと思います。

世の中のサイト(主にSNS)ってユーザーアカウントにアイコン(画像)が設定可能ですよね。
それを編集するときアイコン以外(名前、プロフィール等)だけ編集してアイコンはいじらない場合、アイコン画像はそのまま変更なしでプロフィールの変更ができます。
でも自分でlaravelでサイトを作ってみて気づいたのが画像に対してはoldヘルパーが適用されずどうやったらその機能を実現できるのかという点です。

今回自分なりに思いついた実装方法を紹介していきます。

#ルーティング

“`php:web.php
Route::get(‘/posts/edit/{post}’, ‘PostsController@edit’);
“`

暗黙の結合を使って編集ページにpostsテーブルからカラムを持っていきます
今回画像のカラム名はpathになります。

#if文を使って実装できた

“`php:PostsController@edit
public function update(Request $request,

元記事を表示

~全パターン~ 【php用】47都道府県の配列(連想配列)

# どうも7noteです。ほぼ自分用メモです。

漢字ひらがなローマ字等、「県」のアリナシなどよく使われる全表記パターンの配列を用意。
**順番は北から順**(都道府県番号順)になっています。

***!!! 目次の利用を推奨 !!!***

**目次**

> – 1次元配列(普通の配列)
– ひらがな
– カタカナ
– 漢字(★)
– ローマ字(★)
– 2次元配列(連想配列)
– キーが[数字]
– [数字]=>ひらがな
– [数字]=>カタカナ
– [数字]=>漢字(★)
– [数字]=>ローマ字(★)
– キーが[ひらがな]
– [ひらがな]=>ひらがな
– [ひらがな]=>カタカナ
– [ひらがな]=>漢字
– [ひらがな]=>漢字 (不一致版)
– [ひらがな]=>ローマ字
– キーが[カタカナ]
– [カタカナ]=>ひらがな
– [カタカナ]

元記事を表示

複数のLaravelアプリを任意のデータベースに接続する方法

##はじめに
Laravelでの開発で、最初のサンプルアプリはつくってみた。
次は本格的にアプリケーションを作ってみたいけど
最初に使ったDBとは別のDBに接続してテーブル作りたい。
そんな時に試行錯誤した設定方法を備忘録として残します。
誰かの参考になれば幸いです。

*1〜3の手順は初めてLaravelを使用する際にも通る工程です。

開発環境
MAC
VirtualBox
Homestead
vagrant 2.2.9
PHP 7.3.11
Laravel 5.5.48

##1.Laravelのダウンロード
composerで新規のLaravelをインストールしていきます。
ターミナルを開いてHomesteadが置いてあるディレクトリまで移動します。
移動したら以下を打ち込んでください。
`composer create-project laravel/laravel Laravel_new`
`Laravel_new`の部分はファイル名にあたります。任意のプロジェクトファイル名に変更してください。
ディレクトリ構造は
Laravel
 |- Homestead
 |- Lar

元記事を表示

DockerでWordpress

#Wordpressのローカル環境を構築したい時の選択肢
・MAMP
・XAMMP
・Local by flywheel
・Docker
おそらく一番簡単なのは3つめのLocal by flywheelだと思います。
私の場合は前者3つが手持ちのPC(MacOS13)で使えなかったので、Dockerでできる方法を調べました。

#Dockerによるローカル環境を構築
(参考: [初心者|Docker-ComposeでWordPressとMySQLとphpMyAdminのローカル環境の構築](https://bityl.co/4VD3) )
Dockerとは…??って感じの人はかめさんの[Docker超入門①〜Dockerってなに?〜【初心者向け】](https://bityl.co/4Vcv)でまず勉強するといいと思います。

プロジェクトファイルの中にymlファイルを作成

“`terminal.
$ touch docker-compose.yml
“`

ymlファイルに以下をコピペ

“`docker-compose.yml
version: “3”
service

元記事を表示

WEBサーバとDBサーバを使用してwordpressを構築

#目的
[wordpress構築手順](https://itexpert.tips/ja/wordpress-ja/ubuntu-linux%e3%81%abnginx%e3%81%a7wordpress%e3%82%92%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%99%e3%82%8b/#3)とは別のサーバ構成を用いた構築手順になります。
どういうことかというと、
[wordpress構築手順](https://itexpert.tips/ja/wordpress-ja/ubuntu-linux%e3%81%abnginx%e3%81%a7wordpress%e3%82%92%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%99%e3%82%8b/#3)では、一台のインスタンスにWEBサーバーとDBサーバーの役割をまとめました。
今回の記事では、VMインスタンスを2台用意する。
一つ目のVMインスタンスにWEBサーバーを、二つ目のVM

元記事を表示

配列の中のnullの要素を排除する方法

“`php

null);
}

$value_array = [100, 200, null, 400, null];

//array_filterを使用してコールバック関数に配列を渡す
$value = array_filter($value_array, ‘valuecomp’);

var_dump($value);

?>

“`

“`php
実行結果
array(3) { [0]=> int(100) [1]=> int(200) [3]=> int(400) }
“`

“`php
//配列の番号を詰める場合は、これ

array_values($value);
var_dump($value);

“`
“`php
実行結果
array(3) { [0]=> int(100) [1]=> int(200) [2]=> int(400) }
“`

元記事を表示

memory_limitをmacで編集する方法【エラー:Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52】

ある日にcomposer requireすると、エラーが表示

“`
Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52

Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errors.%
“`

memoryがいっぱい?
macの容量、メモリ共に空いていますけど??

調べてみると、

php.iniに記載されている、memory_limitが上限に達したようだ。
デフォルトだと128MBが設定されているので、それを更新させる必要がある。

# ph

元記事を表示

ソートの関数を使わずに配列を並び替える「バブルソートアルゴリズム」

#課題
下のようなGETポストが渡ってきたと仮定し、それをソート関数を使わずに小さい順に並び替えるという機能をPHPで作る学習で試行錯誤したのでその跡を残しておきたく。

“`
http://localhost:10080/index.php?array=3,2,1,4,15,18,13,99,77,66,1,100,0
“`

バブルソートというアルゴリズムでこれが実現できます。バブルソートとは、一つのループの中にもう一つループを作り、内側のループで隣り合う数字の大小を比較して並び替えていくことで、配列全体を並び替えます。[Wikipediaの説明](https://ja.wikipedia.org/wiki/%E3%83%90%E3%83%96%E3%83%AB%E3%82%BD%E3%83%BC%E3%83%88)がわかりやすいです。

#実装

“`PHP

元記事を表示

WordPressで記事の状態を確認する関数

公式 → [WordPress codex](https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_post_status)

WordPressでの記事の状態にてその後の処理を決めるために
記事の状態を取得する処理を実装した

“`PHP

“`

既に用意されている関数だったのでリファレンスをしっかりと読めば
直ぐに処理を追加することが出来た
上記の$IDの中身は下記のいずれかになるのでそれに対して
条件を作れば求めた処理ができる

“`
– ‘publish’ – 公開済
– ‘pending’ – 承認待ち
– ‘draft’ – 下書き
– ‘auto-draft’ – 新規作成された投稿。まだコンテンツがない。
– ‘future’ – 予約済(未来に投稿される)
– ‘private’ – 非公開(ログインしていないユーザーから見えない)
– ‘inherit’

元記事を表示

PHP テンポラリーファイルが作成されるディレクトリを確認する

# 目的

– PHPで作成されるテンポラリーファイルがどのディレクトリに作成されるかを得る方法をメモ的にまとめる。

# 詳細

– 下記を実行するとsys_temp_dirの値が返される。

“`php
sys_get_temp_dir();
“`

# 参考文献

– [https://www.php.net/manual/ja/function.sys-get-temp-dir.php](https://www.php.net/manual/ja/function.sys-get-temp-dir.php)
– [https://www.php.net/manual/ja/ini.core.php#ini.sect.file-uploads](https://www.php.net/manual/ja/ini.core.php#ini.sect.file-uploads)

元記事を表示

【PHP】日本語のyyyy年MM月dd日という文字列をyyyy-MM-ddにサクッと変換する方法

## はじめに
先日[teratailで回答した内容](https://teratail.com/questions/304156#reply-427340)と同じになりますが、メモも兼ねて。

| PHPのバージョン |
|:-:|
| 7.4.10 |

## コードと簡単な説明
“`php
$date = DateTime::createFromFormat(‘Y年m月d日’, ‘2020年11月19日’);
echo $date->format(‘Y-m-d’);
// 出力:2020-11-19
“`
日時表示を特定のルールでフォーマットする場合は、`DateTime::createFromFormat`が便利です。
第1引数に書式を、第2引数に日時を渡すと、フォーマットされたDateTime型のインスタンスが返ってきます。
> 返り値
> 新しい DateTime のインスタンス、失敗した場合に FALSE を返します。

[公式ドキュメント](https://www.php.net/manual/ja/datetime.createfromformat.php)にはサ

元記事を表示

array_slice関数

# array_slice
配列の一部の範囲をスライス(切り取る、取得する)

“`
array_slice(array $array, int $offset [,int $lenght = NULL[, bool $preserve_keys=False]]):array
“`
## 引数 
$array=>対象の配列

$offset=>取得したい要素

$lenght=>取得したい要素の数

$preservekeys=>trueのときは、引数preservekeys=>trueのときは、引数arrayのキー番号を保持した戻り値を返す。falseのときは、戻り値のキー番号は始まりになる

##戻り値
offsetから$lenght分の要素

## 使用例
入力

“`
$array=[“a”,”b”,”c”,”d”,”e”,”f”,”g”];

echo var_dump($array);

$array_slice=array_slice($array,3,2);

echo var_dump($array_slice);
“`

出力

“`
array(7)

元記事を表示

PHP8 RC、Composer2、Xdebug3 RCでLaravel8.xを動かす

## 概要

– PHP8.0がRCになっていたから諸々新し目のものを使って環境構築してみるよ
– 環境自体はDockerで構築していくよ
– 全ての環境に対応出来るわけじゃないと思うけど参考になれば嬉しいよ
– PHP8.0もXdebug3もRCなので現状は実運用しないように、とはいえ開発していくのには見ていくことも必要だよね

## 最終的な環境

“`sh
$ docker-compose exec app php –version
PHP 8.0.0RC4 (cli) (built: Nov 12 2020 20:17:20) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.0-dev, Copyright (c) Zend Technologies
with Zend OPcache v8.0.0RC4, Copyright (c), by Zend Technologies
with Xdebug v3.0.0RC1, Copyright (c) 2002-2020, by Derick Reth

元記事を表示

OTHERカテゴリの最新記事