[FuelPHP]task作成時、指定可能なクラス名・ファイル名の組み合わせとは?
FuelPHPでtaskを作ったとき、実行が可能なファイル名とクラス名の組合わせです。 良く忘れるので忘備録代わりに置いておきます。 特に大文字小文字と、アンダーバーの組み合わせで、何がOKなのかよく忘れてしまいます… まずは、テスト結果から。 クラス名 ファイル名 コマンド 実行 説明 Test test.php php oil refine test OK これが基本形 Test test.php php oil refine Test OK コマンドは大文字小文字関係ない Test test.php php oil refine tESt OK コマンドは大文字小文字関係ない…
続きを読む
[GoogleAnalytics API]エラー:(403) User does not have any Google Analytics account. が出るときの対処法
GoogleAnalytics APIを使用したプログラムで、APIをコールすると、”User does not have any Google Analytics account”エラーが出る場合があります。 data PHP Fatal error: Uncaught exception ‘Google_Service_Exception’ with message ‘Error calling GET https://www.googleapis.com/analytics/v3/management/accounts: (403) User does not h…
続きを読む
[GoogleAnalytics API] エラー:This library must be installed via composer or by downloading the full package. が出るときの対処法
GoogleAnalytics APIを利用したプログラムを実行すると、”This library must be installed via composer or by downloading the full package.”というエラーが出る場合があります。 PHP Fatal error: Uncaught exception ‘Exception’ with message ‘This library must be installed via composer or by downloading the full package. See the ins…
続きを読む
[GoogleAnalytics API]Google_Service_Exception(Insufficient Permission)例外が出るときの対応
GoogleAnalyticsでは、APIを使用することでデータのバッチ登録が可能です。 データを検索(取得)は可能だだが、データファイルのインポートするためにREST APIをコールしたとき、Insufficient Permissionエラーが出る場合があります。 Fatal error: Uncaught exception ‘Google_Service_Exception’ with message ‘Error calling POST https://www.googleapis.com/upload/analytics/v3/management/accounts/…: (…
続きを読む
[FuelPHP]taskとして作ったバッチはサブディレクトリで管理可能?
FuelPHPでは、バッチ処理をtaskのしくみで実行することができます。 インストール直後では、robotsというサンプルスクリプトがおいてあり、下記のコマンドで実行可能です。 php oil refine robotsphp oil refine robots プログラムは、fuel/app/tasksの下で管理するのですが、タスクの数が多くなるとサブディレクトリを作って管理したくなります。 ですが、FuelPHP1.8以下のバージョンでは、taskをサブディレクトリに格納することはサポートされていないようです。 FuelPHPの掲示板でも以下のようなやり取りがあり、FuelPHPの2.0…
続きを読む
[PHP]PHP5におけるgotoの利用について
PHPでは、PHP5.3以降でgoto文をサポートしました。 echo "prog1\n"; goto END_LABEL; echo "prog2\n"; END_LABEL: echo "prog3\n";echo "prog1\n"; goto END_LABEL; echo "prog2\n"; END_LABEL: echo "prog3\n"; 手元のPHP5.3.3環境で上記プログラムの実行すると、結果は以下のようになり、確かにpro…
続きを読む
[PHP]関数の外と中で、同じ名前の変数を定義したときの振る舞いは?
PHPでは変数のスコープに、グローバルは変数と、関数内のみ有効な変数があります。 この2つの間で同じ変数名を定義することは可能ですが、それらは別々のものとみなされます。 $a = 10; function func() { $a = 20; return $a; } func(); echo $a;$a = 10; function func() { $a = 20; return $a; } func(); echo $a; 上記コードを実行した場合、echo $aで見ているのはグローバル変数です。 一方で、funcの中で利用…
続きを読む
[PHP]PHP5から導入された抽象クラスについて
PHPでは、PHP5より抽象クラス(abstract class)が導入されました。 抽象クラスの特徴は下記のとおりです。 ・抽象メソッド(abstruct function …)を含むクラスは、抽象クラスとして宣言される必要があります。 ・抽象クラスには非抽象メソッドを含めることができます。 ・抽象メソッドはメソッド定義を持つ必要はありません。 メソッドの実態は、継承先のクラスでメソッド定義を行います。・抽象メソッド(abstruct function …)を含むクラスは、抽象クラスとして宣言される必要があります。 ・抽象クラスには非抽象メソッドを含める…
続きを読む
[PHP]md5, sha1, crc32の中で最も長いハッシュ値を返す関数はどれ?
PHPでは値のハッシュ値を求めるために、md5(), sha1(), crc32()など、複数の関数が用意されています。 各ハッシュ関数はそれぞれ下記の長さのハッシュ値を返し、3つの中ではsha1()が最も長いです。 [md5] 32byte [sha1] 40byte [crc32] 10byte これは、下記のコードで確認できます。 $md5Val = md5( "a" ); $sha1Val = sha1( "a" ); $crc32Val = crc32( "a" ); &nbs…
続きを読む
[PHP]echoやprintは関数なのか?それとも言語構造なのか?
PHPではechoを使っても、printを使っても画面に文字を出力することができます。 これらはecho( “aaa” )のような形式で文字出力が行えるため、関数のように感じますが、実はどちらも関数ではなく言語構造です。 言語構造というのは、if/functioin/returnと同じように、プログラム言語の一部として組み込まれているという意味です。 言語構造であることは、PHPのオフィシャルドキュメントでも明記されています。 echo は実際には関数ではありません (言語構造です)。 このため、使用する際に括弧は必要ありません。 (いくつかの他の言語構造と異なり) e…
続きを読む
PHPの基本的な知識ついて
PHPは、サーバ側のスクリプト言語です。 PHPファイルには、テキスト、HTMLタグや、PHPスクリプトファイルを含むことができます。 PHPのプログラムは、Windows/Linux以外にもMac等のOS上でも動作することができます。 PHPのプログラムは、同一バージョンであれば、今日使われている多くのサーバで互換性があります。
続きを読む
[PHP]メンバメソッドで、変数の可視性を指定しなかった場合の振る舞いは?
PHPのクラスに含まれるメンバメソッドで,private/public等の可視性(visibility)を指定することができます。この可視性を明示的に指定しなかったときは、publicとみなされます。 PHPのオフィシャルドキュメント(http://php.net/manual/ja/language.oop5.visibility.php)にも下記の記載があります。 クラスメソッドは、public, private, または protected として定義します。 アクセス権を明示せずに宣言したメソッドは、 public となります。クラスメソッドは、public, private, または…
続きを読む
[PHP]if文がfalseと満たされる条件は?(“0.0″はtrue?、それともfalse?)
PHPにてif文がfalseと満たされる条件は、下記値が条件式に書かれた場合です。 false NULL 整数の0 浮動小数点の0.0 空の文字列「""」 文字列"0" 要素が0の配列 プロパティとメソッドをもたないオブジェクトfalse NULL 整数の0 浮動小数点の0.0 空の文字列「""」 文字列"0" 要素が0の配列 プロパティとメソッドをもたないオブジェクト ここで、注意が必要となる点は、文字列”0.0″は、falseではないということです。 たとえば下記のコードは、trueとみ…
続きを読む
[PHP5]関数に渡された引数を数える組み込み関数は?
PHPでは、関数に渡された引数がいくつあるかを、func_num_args()関数で取得できます。 int func_num_args( void )int func_num_args( void ) これは、PHP5.3以降で追加された関数です。 また、下記の例のように、デフォルト引数を省略した場合はfunc_num_args()にカウントされないので注意が必要です。 test.php <?php function add2( $a, $b ) { printf( "引数の数は:%d\n", func_…
続きを読む
[Smarty]PHPでセットしたdefine(“KEY”, “value”)の定数をSmaryで表示する
PHPでは、定数をdefine()関数で定義することができます。 viewのテンプレートにSmartyを使用している場合、この定数は$smarty.constで取得可能です。 以下、コード例です。 test.php <?php define("MESSAGE", "hello world");<?php define("MESSAGE", "hello world"); test.tpl {$smarty.const.MESSAGE}{$smarty.const.MESSAGE} これで…
続きを読む
[CakePHP]elementの*.ctpファイルには関数を書けない
CakePHPにはviewの中で共通仕様するパーツをelementとして定義できるがこの中で、phpのfunctionを書くとエラーになる。 elementのctpファイルは、最終的にViewクラス内の_render()で読み込まれるが、この時include()を使っている。 cake/libs/view/view.php class View extends Object { function _render($___viewFn, $___dataForView, $loadHelpers = true, $cached = false) { … i…
続きを読む
[Smarty]”Call of unknown method ‘assign_by_ref”エラーが出る理由
PHPで、Smartyを使ったフレームワークを使用していると、以下のエラーが出る場合が有ります。 (!) Fatal error: Uncaught exception ‘SmartyException’ with message ‘Call of unknown method ‘assign_by_ref’.’ in …\php\pear\Smarty\sysplugins\smarty_internal_templatebase.php on line 806(!) Fatal error: Uncaught exception ‘SmartyException’ wit…
続きを読む
XAMPPのShellにカスタムの環境変数を追加する
XAMPPでは、簡単に開発を行得るようにする為Shellボタンが用意されています。 これを使う事で、MYSQLやPHPなどで使用する環境変数が適切に整った状態のコマンドラインを用意する事ができます(Shellボタンは画面右側の上から3つ目に有ります)。 具体的には、特にパスの設定をしなくてもmysqlコマンド一発で即、DBにアクセス可能だったりします。 このShellに対して追加で環境変数等を追加したい場合は、xamppインストールディレクトリに有るxampp_shell.batを編集すれば良いです。 このファイルは、デフォルトでは以下の様な感じになってます。 @ECHO OFF …
続きを読む
PHPStormからMySQLに接続する
PHPStormはPHPのIDE環境ですが、IDEとしてJDBC経由でのDB接続機能を持っているため、DBを使ったシステムの開発を行う時に便利です。 今回はMySQLに接続してみます。 確認に使った環境は以下の通りです OS Windows7 IDE PHPStorm 5.0.4 DB MySQL 5.5.27 Community Server (XAMPP 3.1.0に同梱版)OS Windows7 IDE PHPStorm 5.0.4 DB MySQL 5.5.27 Community Server (XAMPP 3.1.0に同梱版) MySQLへ接続できる事を…
続きを読む
[PHPStorm]コメントアウトを行うためのショートカット
PHPStormでは、エディタで範囲選択した上で”Ctrl+/”で、コメントアウトすることが出来ます。 もう一度Ctrl+/で、コメントを外す事ができます。 例えばこんな感じで範囲選択してCtrl+/を押すと… このようにコメントアウトされます。 htmlタグやPHPのコードも文脈を判断して適切なコメント文字を入れてくれます。 複数行選択していても、Ctrl+/だと一行コメントになります。 複数行を同時にコメントアウトしたい場合は、Ctrl+Shift+/を使います。 先ほどのコードを、Ctrl+Shift+/でコメントアウトすると以下のようになります。
続きを読む