jQuery.extendを使ってjsdoc用のコメントを書く

必要にせまられてjQuery.extendを使うことになった。けど単純にdocコメント埋めてもうまくオーバーライドメンバーのドキュメントを出力できない。

このように書く。

(function($){
	/**
	 * 親クラス
	 * @class
	 * @constructor
	 */
	var Parent = function(){};
	Parent.prototype = { 
		func1: function(){
		},
		func2:function(){
			alert("parent");
		}
	};

	/**
	 * 子クラス
	 * @class
	 * @constructor
	 * @extends Parent
	 */
	var Child = function(){};
	$.extend(Child.prototype,Parent.prototype,{
	    /**
	     * オーバーライドメソッド
	     * @function
	     * @name Child.prototype.func2
	     */
		func2:function(){
			alert("child")
		}
	});
})(jQeury);

もしかしたら、バージョンによっては@memberOfとか@methodOfとかで出来るかもしれないけどうちの官位今日(2.4)では出来なかった。

sample

(function($) {
    // ウィジェット定義
    $.widget('test.myWidget', {
    
        // デフォルト設定
        options: {
            content: 'hoge'
        },

        // 初期化処理として自動的に呼び出される
        _init: function() {
            this._update();
        },

        // プライベートメソッド
        _update: function() {
            var opts = this.options;
            var elm = this.element;
            elm.html(opts.content);
        },

        // パブリックメソッド
        setContent: function(str) {
            this.options.content = str;
            this._update();
        }

    });
    delegate = function(func,ctx){
    	return function(){ return func.apply(ctx,arguments); };
    };
    $.widget('forms.textField', {
        
        options: {
            fields: []
        },
        _init: function() {
        },
        validate: function(){
        	this.message = "hello;"
        	return false;
        },
        getMessage: function(){
        	return this.message;
        }
    });    
    $.widget('forms.form', {
        
        options: {
        	fields: []
        },
        _init: function() {
        	this.element.submit(delegate(this._onsubmit,this));
        },
        _onsubmit : function(){
        	this.messages = [];
        	var valid = true;
            var length = this.options.fields.length;
            for(var i = 0;i < length;i++){
            	var field = $(this.options.fields[i]);
            	if(!$(field).textField("validate")){
            		this.messages.push(field.textField("getMessage"));
            		valid = false;
            	}
            }
            if(!valid){
            	var m = "";
                for(var i = 0;i < this.messages.length;i++){
                	$("#myWidget").append(this.messages[i]);
                	m += this.messages[i];
                }
            	
            	return false;
            }
            return true;
            
        },
        // パブリックメソッド
        setContent: function(str) {
            this.options.content = str;
            this._update();
        },
        

    });
    
})(jQuery);

   // DOM構築完了後
   $(function() {
       // オプションを上書きして呼び出し
       $("#myWidget").myWidget({
           content: 'fuga',
           onUpdate: function() {
               alert('更新されました')
           }
       });
       $("#form1").form({
    	   fields: [
    	            $("#text1").textField(),
                    $("#text12").textField(),
                    $("#text13").textField(),
    	            ]
       });
       
   })

pear install phpunit/PHPUnit が失敗する場合のメモ

何回やっても何回やってもPHPUnitがインストールできなーい(ry

トラブルシューティング

symfony/YAMLがない、と言われる

どうやっても "pear install symfony/YAMLが失敗する場合がある。つぎのように直接tarファイルをインストールする

...>pear install http://pear.symfony-project.com//get/YAML-1.0.5.tgz

他の失敗

キャッシュをクリアする、チャネルを更新するなどで解消する場合がある

...>pear clear-cache
...>pear update-channels

Zend Frameworkで静的ページっぽいものを作る

アプリケーション本体とは別に「このサイトについて」とか「ご利用条件」とかのページを作る場合の備忘録

  1. "guide/:page"みたいなURLに対して controller=>static-content,action=>indexみたいなルートを割り当てる。
  2. "page"パラメータに対応するテンプレートを用意する。
  3. StaticContentController#indexActionで"page"パラメータに対応するテンプレートをrenderする。

apache上のphpmyadminの設定

###############################################################################
#    phpMyAdmin
###############################################################################
Alias /phpmyadmin "E:/usr/share/php/phpMyAdmin-3.3.3-all-languages"
<Directory "E:/usr/share/php/phpMyAdmin-3.3.3-all-languages">
    Options Indexes FollowSymLinks ExecCGI
    AllowOverride All
    Order allow,deny
    Allow from all
    
   ScriptInterpreterSource Registry-Strict
   DirectoryIndex index.cgi index.html index.php
</Directory>