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

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

Windows Xammp環境にphpcsをインストールする

Windows Xammp環境だとphpcsのバージョンは1.3でだいぶ古い。これだとPSR2が使えない。最新のバージョンをインストールする。

pear install PHP_CodeSniffer-2.5.0
phpcs --config-set encoding utf-8
phpcs --config-set default_standard PSR2

参考サイト

PHP CodeSniffer ルールセットのカスタマイズ方法
blog.apar.jp

pear上でのインストールに失敗する

Pearの作業フォルダのデフォルトはCドライブなので、インストールに失敗することがある。

D:\xampp\source\futari>pear install PHP_CodeSniffer-2.5.0
downloading PHP_CodeSniffer-2.5.0.tgz ...
Starting to download PHP_CodeSniffer-2.5.0.tgz (480,157 bytes)
done: 480,157 bytes
ERROR: failed to mkdir C:\php\pear\tests\PHP_CodeSniffer\CodeSniffer\Core\File

正しいパスに変更する。

pear config-set doc_dir D:\xampp\php\pear
pear config-set cfg_dir D:\xampp\php\pear
pear config-set data_dir D:\xampp\php\pear
pear config-set test_dir D:\xampp\php\pear
pear config-set www_dir D:\xampp\php\pear

WindowsのXampp環境でphpDocumenterをインストールする

7-Zipが入っているにも関わらず「ERROR: unable to unpack」エラーが出る。どうやら旧バージョンじゃないと解凍できないみたい。

pear channel-discover pear.phpdoc.org

pear uninstall phpDocumentor

pear install phpdoc/phpDocumentor-2.8.1

Laravelでファイルを生成せずにファイルダウンロード

Laravelでファイルを生成せずにファイルダウンロードしたときのメモ

$stream = fopen('php://temp', 'w');

foreach (Title::all() as $title) {

  fputcsv($stream, $title->toArray());

}

rewind($stream);

$csv = mb_convert_encoding(str_replace(PHP_EOL, "\r\n", stream_get_contents($stream)), 'SJIS', 'UTF-8');

$headers = array(
  'Content-Type' => 'text/csv',
  'Content-Disposition' => 'attachment; filename="' . $filename . '"'
);

return Response::make($csv, 200, $headers);

Laravelでファイルダウンロード1

Laravelでファイルをダウンロードしたときのメモ。

public function export()
{
  $tables = Table::all();

  $filename = 'downloadfile.csv';

  $handle = fopen($filename, 'w+');

  fputcsv($handle, array('created at'));

  foreach ($tables as $row) {

    fputcsv($handle, array($row->created_at));

  }

  fclose($handle);

  $headers = ['Content-Type' => 'text/csv'];

  return Response::download($filename, $filename $headers);

NetBeansのPSRでエラー

NetBeansでLaravelのソースを書いていたら、Lalasniffの記述チェックで

The closing brace for the class must go on the next line after the body

というメッセージが出てしまった。

これは閉じカッコ前に空行があるので間違っている。

<?php

class User extends \Eloquent
{

    public static $rules = [];
    protected $guarded = ['id'];
【ここに空行がある】
}

NetBeansの「ツール」⇒「オプション」⇒「エディタ」⇒「空行」⇒「フィールドの後」と「クラス終了の前」を0にして自動整形すれば、エラーは消える。

phpDocumentorをインストールする

phpDocumentorをインストールするコマンドは以下の通り。

pear channel-discover pear.phpdoc.org
pear install phpdoc/phpDocumentor

でも、たいてい失敗する。その場合は

pear clear-cache

キャッシュクリアしてもう一度実行する。


ちなみにphpdocコマンドを使う前には、事前にpearコマンドが必要だ。

pear
phpdoc run -d app/controllers -t doc/controllers

lalasniffでスペースの入れ忘れ

lalasniff使っていたら以下のエラーが出た。functionの後にスペースの入れ忘れたのが原因だった。

Expected 1 space after FUNCTION keyword; 0 found
誤:$this->app->share(function($app) {
正:$this->app->share(function ($app) {

Laravelでパッケージ用のConfigをコピーする

Laravelでパッケージを使う場合には、Configをコピーしてから使う。オリジナルのConfigはcomposer updateのたびにデフォルトに戻るからだ。
「config:publish ベンダ名/パッケージ名」でConfigがapp/config/packagesにコピーされる。

>php artisan config:publish schickling/backup
Configuration published for package: schickling/backup