ふたりはララベル (Laravel PHP Framework)

PHPフレームワークのLaravelの体験記を書いていきます。こんなタイトルのブログですが萌え系アニメは一秒たりとも観たことがありません。

Xserverにgitをインストールする

ググった情報のコピペだけでは出来なかったよ。まず

wget https://github.com/git/git/archive/master.zip

はOpenSSLのバージョンの関係で失敗するので

wget https://www.kernel.org/pub/software/scm/git/git-2.17.0.tar.gz

にした。ところがmakeが出来なかった。

tar zxvf git-2.17.0.tar.gz
cd git-2.17.0
./configure --prefix=$HOME/opt
make -i all
make -i install
~/opt/bin/git --version

make -i でエラー無視インストールすると上手くいった。

Excelの書式を全て削除するマクロ

Excelで書式が増えすぎた場合は手で削除するのはムリ。マクロで一気に消しましょう。

Sub Excelの書式を全て削除()

    Dim myStyle As style

    On Error Resume Next

    For Each myStyle In ActiveWorkbook.Styles
    
        If Not myStyle.BuiltIn Then
            myStyle.Delete
        End If

    Next

End Sub

humhubをWindowsにインストールする

PHPSNS、どれを使うか悩んでいる。OXWALLは実際に運用したけど、すごく使いにくかった。Minds、Movimもイマイチ。Elggはバージョン3が中々出ない。というわけでhumhubにチャレンジ。Yiiフレームワークはあまり好きじゃないんだが…。

バージョンの注意事項

humhub 1.2以前はPHP7.2では動作しないので注意。PHPのバージョンを下げるか、humhub 1.3以降を使う。

ダウンロード

php.iniの設定

php.iniの「php_ldap.dll」「php_intl.dll」のコメントを外す。

composer-asset-pluginをインストール

D:\xampp\source\humhub>composer global require "fxp/composer-asset-plugin:^1.2.0"
Changed current directory to C:/Users/AppData/Roaming/Composer./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
  - Installing fxp/composer-asset-plugin (v1.4.2): Downloading (100%)
Writing lock file
Generating autoload files

このあとcomposer Update。時間はかなりかかる。

f:id:laravel:20180623052348p:plain

LaravelでPHPUnitを使ってNo tests executed!

Laravel5.4でPHPUnit6を使ったときに「No tests executed!」が出る。Laravel5.4はPhpunit6に対応していないので、vendor内にあるphpunitを使うと解決できる。

php vendor\phpunit\phpunit\phpunit

storeとupdateで共通で使えるバリデーション

storeとupdateでバリデーションを共通化したいけど、updateの時だけユニークチェックしたい。という時の書き方。あまりキレイじゃないね。。。

public function valid()
{
  $validator = \Validator::make($this->toArray(), [
    'code' => 'required|max:255',
  ]);

  if ($this->id && !$validator->fails()) {
    $validator = \Validator::make($this->toArray(), [
      'code' => 'unique:titles,code,' . $this->id
    ]);
  }

  return $validator;
}

Requestに値を入れてテストする

コントローラーをテストする時にRequestの変数に値を入れる。

$request = new Request;

$request->merge([
'name' => 'testname',
]);

$controller = new \Lb\Http\Controllers\TitleController($request);

$controller->update($request, 100);

$title = Title::find(100);

$this->assertEquals($title->name, 'testname');

長くなったLaravelのModelを分割

長くなったLaravelのModelを分割する方法の一つとして、私は上位モデルを使うときがある。


Titleモデルのうち、Updateに関する機能を独立させるときはこんな感じ。テーブル名を指定するのがポイント。

class TitleUpdate extends Title
{
 protected $table = 'titles';

 public function myvalidator($request)
 {
	return \Validator::make($request->toArray(), [
		'releasedate' => 'date_format:Y/m/d',
	]);
 }
}

XserverではOwncloud9以降がインストールできない

XserverではOwncloud9以降がインストールできなかった。libxml2のバージョンが低いから。これは困った。しょうがいないからOwncloud8を使うしかないんだけど、Owncloud8だとPHP7に対応していない。つまりXserverのPHPが7以上にあげられないのだ。