PHPプログラムに関する各種メモ書き:タグ「composer」での検索

PHPMD で PHPソースのチェックを行う

● PHPMDとは?

バグにつながりそうな怪しい ソースコードをチェックして教えてくれる php md。
コーディング時に必ず使うようにしておくとミスやバグが減るので是非使いましょう

● PHPMDのインストール

1. composer コマンドからインストールします

composer global require phpmd/phpmd

2. シェルが bash の場合は次のコマンドでパスを追加しておきます

echo 'export PATH=$HOME/.composer/vendor/bin:$PATH' >> .bash_profile
source .bash_profile

3. phpmd コマンドを入力してパスが通ってるか確認します

phpmd

● PHPMDで phpソースコードのチェックを行う

(ソースファイル myfile.php チェックしテキストデータで結果を受け取る。チェックする項目は
codesize,controversial,design,naming,unusedcode)

phpmd  myfile.php  text  codesize,design,naming,unusedcode

オプションの意味

codesize	コードが大きすぎないかチェック
controversial	命名規則など議論の余地がある部分を検出するチェック
design	設計上の関連のチェック
naming	変数名など名前関連のチェック
unusedcode	使われていない変数のチェック
cleancode	綺麗なコードかチェック

書式は以下の通りです

phpmd (phpファイル名) ( text または xml または html ) (オプションをカンマで区切る)

引用 : https://simple-it-life.com/?p=761

● エディタ SublimeTextで PHPMDを使う

次のパッケージをインストールします

SublimeLinter
SublimeLinter-phpmd

・SublimeLinter-phpmdの設定方法

【Package Settings】→【SublimeLinter】→【Settings - User】に記述があります。

設定例: (ルールセットから controversial, design, naming を取り除いています)

            "phpmd": {
                "@disable": false,
                "args": [],
                "excludes": [],
                "rulesets": "cleancode,codesize,unusedcode"
            },

また反応速度が速いとオートコンプリートと機能がバッティングしてしまうので、SublimeLinterのDelayの値を少し多めにしてやると良いと思います

設定例: ディレイ値を増やす

        "delay": 0.75,

これで PHPファイルを開いているときに自動的にソースのおかしそうなところを指摘してくれます。

No.1120
07/20 17:29

edit

エラー対処
composer

PHPでSafariの「リーダー表示」のように記事を抜き出す

● PHPでSafariの「リーダー表示」のように記事を抜き出す

https://packagist.org/search/?q=Readability

● j0k3r/php-readability

https://packagist.org/packages/j0k3r/php-readability

composer require j0k3r/php-readability
use Readability\Readability;

$url = 'http://www.medialens.org/index.php/alerts/alert-archive/alerts-2013/729-thatcher.html';

// you can use whatever you want to retrieve the html content (Guzzle, Buzz, cURL ...)
$html = file_get_contents($url);

$readability = new Readability($html, $url);
// or without Tidy
// $readability = new Readability($html, $url, 'libxml', false);
$result = $readability->init();

if ($result) {
    // display the title of the page
    echo $readability->getTitle()->textContent;
    // display the *readability* content
    echo $readability->getContent()->textContent;
} else {
    echo 'Looks like we couldn\'t find the content. :(';
}
No.1093
07/08 00:19

edit

composer

PHPのcomposer使い方とautoloaderの高速化

● composerのインストール

ターミナルから次のように入力する

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer

● composerのバージョンの確認

composer -v

● composerを使ってPHPパッケージをインストールする

composer require 『パッケージ名』

● composerを使ってPHPパッケージをアンインストールする

composer remove --update-with-dependencies 『パッケージ名』

● codeigniterで autoload を使用する

ファイル application/config/config.php に設定があるので以下のように変更します

$config['composer_autoload'] = TRUE;

● composer の autoloader を高速化する

composer.json があるディレクトリから下記のコマンドを実行

composer --optimize-autoloader update

ファイル vendor/composer/autoload_classmap.php の中身がフルパスを記述したものに書き換わりファイルを探しに行く時間が短縮されるので高速になります。

● composer を使ってインストールしたモジュールのバージョンを表示する

composer.json があるディレクトリから実行します

composer show

● composer を使ってインストールしたモジュールのバージョンを最新にする

composer.json があるディレクトリから実行します

composer update
No.1086
09/28 15:14

edit

composer

PHPでCSVを読み込み、出力(ダウンロード)させるLeague CSV】

◆ 素のPHPでCSV読み込みをする

$file = new SplFileObject($file_path);
$file->setFlags(SplFileObject::READ_CSV);
$convert_count = 0;
foreach ($file as $line) {
	print_r($line);
}

● league/csvを使用してCSVファイルを扱う (要PHP5.5以上)

https://packagist.org/packages/league/csv

● 1. インストール

composerを使用します

composer require league/csv

● 2. 読み込みまたは出力

composerを使用しているので autoload.php を読み込みます

$php_version = (float)phpversion();
if ( $php_version < 5.5 ){ die("league/csv を使用するにはPHP バージョン5.5以上が必要です");}
require APPPATH.'/vendor/autoload.php';
use League\Csv\Reader;
use League\Csv\Writer;

// CSVファイルの読み込み
$csv_reader = Reader::createFromPath('/path/to/your/csv/file.csv');
$headers = $csv_reader->fetchOne();
$res = $csv_reader->setOffset(10)->setLimit(25)->fetchAll();
print_r(res);

// ファイルの出力
$csv_writer = Writer::createFromFileObject(new SplTempFileObject());
$csv_writer->insertOne( array('カラム1','カラム2','カラム3' ) );
$csv_writer->output('users.csv');

No.1012
05/31 10:54

edit

composer
CSV

PHPフレームワークCodeIgniterの導入とサンプル

CodeIgniterはPHPフレームワークの中でも比較的シンプルでフレームワーク初学者にはCakePHPよりおすすめします。 動作も高速です。

●0-A.インストール(公式サイトからダウンロードする方法)

  • http://www.codeigniter.com/download からダウンロード
  • 解凍してできたフォルダ「CodeIgniter-3.1.3」を「codeigniter」にリネームする
  • フォルダ 「codeigniter」直下の以下のファイルとフォルダは不要なので削除する
    composer.json
    contributing.md
    license.txt
    readme.rst
    user_guide(フォルダ)
    
  • フォルダ「codeigniter」をサーバの一番上(もしくは任意の場所)の階層にアップロード

●0-B.インストール(composerを使用する方法)

サーバの任意のディレクトリ(この場合では ~/php_composer/ )へcomposerをインストールします。

cd ~/php_composer/
curl -sS https://getcomposer.org/installer | php

(インストール後に composer.phar のパスが表示されます。これがcomposerコマンドの場所です。)

.bash_profileなどにパスを追加 vi などで下記の行を追加します。

PATH="$PATH":~/php_composer/

bach を再起動したら「CodeIgniter Composer Installer」を使ってCodeIgniterをインストールします。

■ CodeIgniter Composer Installer https://github.com/kenjis/codeigniter-composer-installer

CodeIgniterをインストールしたディレクトリから以下を実行

composer.phar create-project kenjis/codeigniter-composer-installer codeigniter

1. 【設定ファイルの変更】

codeigniter/application/config/routes.php を編集

$route['default_controller'] = 'welcome';

この行の 'welcome' を 'top' に変更します。

$route['default_controller'] = 'top'; // welcome → top に変更

2. 【コントローラーファイルの作成】

codeigniter/application/controllers/Welcome.php を コピーしてファイル名「Top.php」に変更する

ファイル名は「Top.php」(先頭は大文字)でなければいけません。

codeigniter/application/controllers/Top.php を編集

中身は以下のようにします。(クラス名「Top」先頭は大文字でなければいけません)

<?php
class Top extends CI_Controller {
	public function index()
	{
		$this->load->view('topview');
	}
}

とします。

3. 【ビューファイル(HTMLテンプレート)の作成】

codeigniter/application/views/welcome_message.php を コピーしてファイル名「topview.php」に変更する

codeigniter/application/views/topview.php を編集

拡張子は .php ですが 中身はHTMLファイルなので以下の様な内容にします。

<html>
<body>
<h1>test</h1>
</body>
</html>

ここで
http://localhost/codeigniter/index.php/Top
にアクセスしてテンプレートが表示されることを確認します。

4. 【データベースの作成】

今回 データベースにはsqlite3 を使用してみます。

codeigniter/application/config/database.php を編集します

$active_group = 'default';
$query_builder = TRUE;

$db['default'] = array(
	'dsn'	=> '',
	'hostname' => 'localhost',
	'username' => '',
	'password' => '',
	'database' => APPPATH.'sqlite3/test.sqlite3',
	'dbdriver' => 'sqlite3',
	'dbprefix' => '',
	'pconnect' => FALSE,
	'db_debug' => TRUE,
	'cache_on' => FALSE,
	'cachedir' => '',
	'char_set' => 'utf8',
	'dbcollat' => 'utf8_general_ci',
	'swap_pre' => '',
	'encrypt' => FALSE,
	'compress' => FALSE,
	'stricton' => FALSE,
	'failover' => array(),
	'save_queries' => TRUE
);

フォルダcodeigniter/application/sqlite3/ を作成する。

設定ファイル/codeigniter/application/config/migration.php の編集

$config['migration_enabled'] = TRUE;  		// FALSE → TRUE に変更
$config['migration_type'] = 'sequential';	// マイグレーション管理を「日付」→「連番」に変更
$config['migration_version'] = 1;					// 現在のバージョン

フォルダcodeigniter/application/migrations/ を作成する。

フォルダ migrations の中にファイル 001_create_table.php を作成し以下の内容で保存

<?php
class Migration_Create_table extends CI_Migration {
    public function __construct(){
        parent::__construct();
    }
    public function up(){
        $this->dbforge->add_field(array(
            'data_id' => array(
                'type' => 'INT',
                'unsigned' => TRUE,
                'auto_increment' => TRUE
            ),
            'user_name' => array(
                'type' => 'VARCHAR',
            ),
            'modified_date' => array(
                'type' => 'TEXT',
            ),
        ));
        $this->dbforge->add_key('data_id', true);
        $this->dbforge->create_table('user_dt');
    }
    public function down(){
        $this->dbforge->drop_table('user_dt');
    }
}

↑このファイルはSQL文で言うところの

CREATE TABLE mandolin_chord_dt (
  data_id integer PRIMARY KEY NOT NULL,
  user_name varchar NOT NULL,
  modified_date text
);

になります。

マイグレーションを実行するコントローラ codeigniter/application/controllers/Migrate.php を作成し以下の内容で保存

<?php
class Migrate extends CI_Controller
{
	public function index(){
	        $this->load->library('migration');
	        if ($this->migration->current() === FALSE){
	                show_error($this->migration->error_string());
	        }
	}
}

http://localhost/codeigniter/index.php/migrate/ を実行してデータベースを作成。

codeigniter/application/sqlite3/test.sqlite3 が作成されていることを確認します
またテーブルも正しく作成されているかどうか確認します

5. データベースへのアクセス

codeigniterはデータベースへのアクセスクラスを持っています。 使い方は以下のとおり( test_dt から全件取得し表示する例。)

$this->load->database();
$this->db->from('test_dt');
$this->db->select('*');
$query = $this->db->get();
$data_loop = $query->result_array();
print_r($data_loop);

6. Codeigniterのバージョンの調べ方

system/core/CodeIgniter.php

にバージョン記述があります。

CodeIgniter 3.0でPHPUnitを使う post http://blog.a-way-out.net/blog/2015/05/19/ci-phpunit-test/

No.950
07/08 00:18

edit

CodeIgniter
composer