memo.xight.org

日々のメモ

カテゴリ : PHP

8ページ目 / 全10ページ

PHP の真偽値

一覧

偽になるもの
boolean の false false
integer の 0 0
float の 0 0.0
空の文字列 "" ''
文字列の0 "0" '0'
ゼロを要素とする配列
ゼロを要素とするオブジェクト
特別な値 NULL (値がセットされていない変数)
それ以外は真

注意

  "00" や "0.0" は 真 (true)

Reference

PHP Manual - language.types.boolean
  Perl の真偽値[2004-06-18-2]

PHP 関数検索へのリンクプラグイン

PHP 関数検索へのリンクプラグイン

### PHP 関数検索へのリンクプラグイン
# usage: {{php('関数名')}}
sub php {
	my ($str) = @_;
	my $prefix = q(http://www.php.net/search.php);
	my $lang = q(ja);
	# quickref  : function list
	# wholesite : whole site
	# manual    : online documentation [en]
	# bugdb     : bug database
	# maillist  : general mailing list
	# devlist   : developer mailing list
	# phpdoc    : documentation mailing list 
	my $show = q(quickref);
	return qq(<a href="$prefix?lang=$lang&show=$show&pattern=$str" title="PHP Manual - $str">PHP Manual - $str</a>);
}

PHP Manual in VIM

使用法

  1. PHP Manual をダウンロード
  2. vim/doc ディレクトリに設置
  3. vim を起動して

:helptags .vim/doc

  4. .vimrc の編集
     以下を追加

if has("autocmd")
	autocmd BufNewFile,Bufread *.php,*.php3,*.php4 set keywordprg="help"
endif

  5. 関数名の上で K を入力することでヘルプを閲覧可能.

Reference

  Planet XML - PHP Manual in VIM
  http://planetxml.de/vim-php-manual.php

via

  cl.pocari.org - 2004-12-06
  http://cl.pocari.org/2004-12.php#2004-12-06-2

Tulpes PHP4 Debug Helper - 変数を色づけしたHTMLで出力してくれるライブラリ

Reference

  Tulpes PHP4 Debug Helper (debuglib.php)
  http://www.atomar.de/public/code/debuglib/debuglib.demo.php
  [PHP-users 23795] php のデバッグ
  http://ns1.php.gr.jp/pipermail/php-users/2004-December/024315.html

via

  cl.pocari.org - 2004-12-03
  http://cl.pocari.org/2004-12.php#2004-12-03-4

chalowのPEAR検索プラグイン

PEAR 検索プラグイン

### PEAR Moduleの検索リンク
# usage: {{pear_search('pkg_name')}}
sub pear_search {
	my ($word) = @_;
	my $prefix = q(http://pear.php.net/package-search.php);
	return qq(<a href="$prefix?pkg_name=$word" title="PEAR Search - $word">$word</a>);
}

HTMLエンティティ生成

Summary

  10進,16進のHTMLエンティティを生成できる.

Perl モジュール

  HTML::Entities は日本語が使えない.
  HTML::Entities::Numbered というモジュールもあるのか.

PHP

  mb_encode_numericentity - 文字をHTML数値エンティティにエンコードする
  mb_decode_numericentity - HTML数値エンティティを文字にデコードする

追記

  FreeMind が日本語文字列を「16進のHTMLエンティティ」で出力するので困る.

Reference

  HTMLエンティティ化
  http://hp.vector.co.jp/authors/VA022023/javascript/make_html_entity-ja.htm

  HTMLエンティティ生成
  http://gadd9.com/soft/entity.html

HTML::Entities
HTML::Entities::Numbered
PHP Manual - mb_decode_numericentity
PHP Manual - mb_encode_numericentity

via

  blog.bulknews.net - 2004-08-12
  http://blog.bulknews.net/mt/archives/001184.html

PHPでChangeLogビューワー

Summary

  ChangeLogメモを読み込んでXMLを書き出してから色々やるみたい.

Reference

  Nobu's ChangeLog - CHANGELOG
  http://satou.myhome.cx/~nobu/clog/cat_changelog.html
  Nobu's ChangeLog - 2004-11-03
  http://satou.myhome.cx/~nobu/clog/2004-11-03.html#2004-11-03-6
  Nobu's ChangeLog - 2004-11-04
  http://satou.myhome.cx/~nobu/clog/2004-11-04.html#2004-11-04-5

PHP + Apacheのチューニング

PHPのコンパイル

  いらないものはdisable.
  ApacheはDSOにしない.
  必要なextensionでもたまにしか使わない物はshared objectにしてdl()する.

./configure --with-apache=../apache_1.3.29 --with-mysql=/usr
--enable-mbstring --disable-ipv6 --disable-xml --disable-ctype
--disable-tokenizer --disable-path-info-check --disable-overload
--disable-posix --disable-cli --disable-cgi


Apacheのコンパイル

  まず src/include/httpd.h の HARD_SERVER_LIMIT 256 を 2048 へ変更
  その後configure.
  いらない物は入れない.
  DSOにしない.

./configure --disable-module=actions --disable-module=alias
--disable-module=asis --disable-module=autoindex --disable-module=cgi
--disable-module=imap --disable-module=include
--disable-module=setenvif --disable-module=status
--disable-module=userdir --activate-module=src/modules/php4/libphp4.a


httpd.confの主要な部分の変更

StartServers → リクエスト数の半分くらい?
MaxClients → サーバーが処理できる最大プロセス数の半分以下くらい?
AllowOverride → none (.htaccessを使用しない)
ServerSignature → off (ちょこっとだけ無駄を省く)


mmcacheをインストールしてphp.iniを編集

session.save_handler = mmcache (sessionはmmcacheにおまかせする)
mmcache.sessions="shm_only" (セッション情報は全てメモリ上に)
mmcache.shm_only="1" (キャッシュも全てメモリ上に)
output_buffering = On (ためてWrite()のコールを少なくする)
register_globals = Off
expose_php = Off (ちょこっとだけ無駄を省く)
register_argc_argv = Off


Reference

  PHP-J.com ブログ
  http://phpj.jugem.cc/?eid=6

PHP-J

Summary

  F-boardというデータベースとPHPによるスレッド形式の掲示板を配布しているサイト.
  フォーラムの種類は複数対応可能.
  フォーラムをカテゴリ別に表示させることができる掲示板.

Reference

  PHP-J
  http://www.php-j.com/

SOAPの簡単な使用例

Reference

  河馬屋二千年堂's Page - Perlの小技 - SOAP::Liteモジュール
  http://homepage3.nifty.com/hippo2000/perltips/SOAP/Lite.htm
  [PHP-users 9699] SOAPによる実装
  http://ns1.php.gr.jp/pipermail/php-users/2002-September/009705.html
  [PHP-users 9741] Re: SOAPによる実装
  http://ns1.php.gr.jp/pipermail/php-users/2002-September/009747.html

phpRPG

Summary

  PHP + MySQLによるWebRPG

Screenshot (Version 0.3)

  クリックして拡大クリックして拡大クリックして拡大クリックして拡大

Screenshot (Version 0.5

  クリックして拡大クリックして拡大クリックして拡大クリックして拡大

Reference

  phpRPG.org
  http://phprpg.org/

 PEAR - PHP Extension and Application Repository

Summary

  Perl でいう CPAN みたいなもの.
  ライブラリを提供する.

初めて使うとき以下を実行

$ w3m -dump_source http://pear.php.net/go-pear | php -q

  または

$ lynx -source http://pear.php.net/go-pear | php -q


ライブラリの検索

# pear search <keyword>


ライブラリのインストール

# pear install <package>


ライブラリのアップグレード

# pear upgrade <package>
# pear upgrade-all


Debian にて

  デフォルトで パッケージを /usr/share/php にインストールするようになっているので,/etc/php4/apache/php.ini を編集
  /usr/share/php を追加

include_path = ".:/usr/share/pear:/usr/share/php"

Reference

  PEAR :: The PHP Extension and Application Repository
  http://pear.php.net/

via

  cl.pocari.org - 2003-04-19
  http://cl.pocari.org/2003-04.php#2003-04-19-1

多次元連想配列

Perl

%PREF = (
	'kyoto' => {
		'NAME'	 => '京都',
		'JINKOU' => '200万',
		'MEISAN' => '豆腐',
	},
	'osaka' => {
		'NAME'	 => '大阪',
		'JINKOU' => '500万',
		'MEISAN' => 'たこやき',
	},
);

$PREF{'kyoto'}{'NAME'} = 京都


PHP

$PREF = array(
	"kyoto" => array(
		"NAME"   => "京都",
		"JINKOU" => "200万",
		"MEISAN" => "豆腐",
	),
	"osaka" => array(
		"NAME"   => "大阪",
		"JINKOU" => "500万",
		"MEISAN" => "たこやき",
	),
);

$PREF["kyoto"]["NAME"] = 京都


Reference

  PHPマニュアル - 配列
  http://www.php.net/manual/ja/language.types.array.php

via

  PHP-users ML - 13954
  http://ns1.php.gr.jp/pipermail/php-users/2003-March/014486.html
  PHP-users ML - 13956
  http://ns1.php.gr.jp/pipermail/php-users/2003-March/014488.html

XML_RSS

XML_RSSパッケージのインストール

# pear install xml_rss


サンプル

<?php
	require_once("XML/RSS.php");
	$rss =& new XML_RSS("http://www.pat.hi-ho.ne.jp/dimension/home.rss");
	$rss->parse();
	echo "<ul>\n";
	foreach ($rss->getItems() as $item) {
		echo "<li><a href=\"" . $item['link'] . "\">" .
		mb_convert_encoding($item['title'],
		mb_internal_encoding(), 'auto') .
		"</a></li>\n";
	}
	echo "</ul>\n";
?>


Reference

XML_RSS

  Do You PHP? - PEARのXML_RSSでRSSしてみる
  http://www.pat.hi-ho.ne.jp/dimension/sample/sample_xml_pear_rss.shtml

MagpieRSS

Summary

  PHPで使えるRSSパーサー

サンプル

<?php
	require_once 'rss_fetch.inc';
	$url = 'http://www.hyuki.com/yukiwiki/wiki.cgi?RssPage';
	$rss = fetch_rss($url);
	$title = $rss->channel['title'];
	$title = mb_convert_encoding($title, "SJIS", "auto");
	echo "<h2>$title</h2>\n";
	echo "<ul>\n";
	foreach ($rss->items as $item ) {
		$title = $item[title];
		$title = mb_convert_encoding($title, "SJIS", "auto");
		$url   = $item[link];
		echo "<li><a href=\"$url\">$title</a></li>\n";
	}
	echo "</ul>\n";
?>

Reference

  YukiWiki - MagpieRSS
  http://www.hyuki.com/yukiwiki/wiki.cgi?MagpieRSS

VimでPHP関数の辞書を作成する方法

vim.sourceforge.net から PHP.dictを取得

  $HOME/.vim/PHP.dict に保存

.vimrc に以下を記述

autocmd FileType php  :set dictionary=$HOME/.vim/PHP.dict

方法

Ctrl-x Ctrl-k

- Reference
  Vim で PHP 関数の辞書を作成する方法についてのメモ
  http://www.asahi-net.or.jp/~wv7y-kmr/memo/vim_php.html
  PHP-dictionary - A PHP-dictionary as a building stone for scripts : vim online
  http://vim.sourceforge.net/scripts/script.php?script_id=534