snippet <?
	<?php

	${1}
snippet ec
	echo ${1};
snippet <?e
	<?php echo ${1} ?>
# this one is for php5.4
snippet <?=
	<?=${1}?>
snippet ns
	namespace ${1:Foo\Bar\Baz};
	${2}
snippet use
	use ${1:Foo\Bar\Baz};
	${2}
snippet	c
	${1:abstract }class ${2:`Filename()`}
	{
		${3}
	}
snippet i
	interface ${1:`Filename()`}
	{
		${2}
	}
snippet t.
	$this->${1}
snippet f
	function ${1:foo}(${2:array }${3:$bar})
	{
		${4}
	}
# method
snippet m
	${1:abstract }${2:protected}${3: static} function ${4:foo}(${5:array }${6:$bar})
	{
		${7}
	}
# setter method
# I think vim's functions will not be called at the snipMate's runtime
# but `compile` time
# so `tolower` here won't work
# but it would be wonderful if we could make the property and parameter to lower case
snippet sm 
	${1:public} function set${2:Foo}(${3:$2 }$${4:`tolower('$2')`})
	{
		$this->${5:$4} = $$4;
		${6}
		return $this;
	}
# getter method
snippet gm
	${1:public} function get${2:Foo}()
	{
		return $this->${3:$2};
	}
#setter
snippet $s
	${1:$foo}->set${2:Bar}(${3});
#getter
snippet $g
	${1:$foo}->get${2:Bar}();

# Tertiary conditional
snippet =?:
	$${1:foo} = ${2:true} ? ${3:a} : ${4};
snippet ?:
	${1:true} ? ${2:a} : ${3}

snippet C
	$_COOKIE['${1:variable}']${2}
snippet E
	$_ENV['${1:variable}']${2}
snippet F
	$_FILES['${1:variable}']${2}
snippet G
	$_GET['${1:variable}']${2}
snippet P
	$_POST['${1:variable}']${2}
snippet R
	$_REQUEST['${1:variable}']${2}
snippet S
	$_SERVER['${1:variable}']${2}
snippet SS
	$_SESSION['${1:variable}']${2}
	
# the following are old ones
snippet inc
	include '${1:file}';${2}
snippet inc1
	include_once '${1:file}';${2}
snippet req
	require '${1:file}';${2}
snippet req1
	require_once '${1:file}';${2}
# Start Docblock
snippet /*
	/**
	 * ${1}
	 */
# Class - post doc
snippet doc_cp
	/**
	 * ${1:undocumented class}
	 *
	 * @package ${2:default}
	 * @subpackage ${3:default}
	 * @author ${4:`g:snips_author`}
	 */${5}
# Class Variable - post doc
snippet doc_vp
	/**
	 * ${1:undocumented class variable}
	 *
	 * @var ${2:string}
	 */${3}
# Class Variable
snippet doc_v
	/**
	 * ${3:undocumented class variable}
	 *
	 * @var ${4:string}
	 */
	${1:var} $${2};${5}
# Class
snippet doc_c
	/**
	 * ${3:undocumented class}
	 *
	 * @package ${4:default}
	 * @subpackage ${5:default}
	 * @author ${6:`g:snips_author`}
	 */
	${1:}class ${2:}
	{
		${7}
	} // END $1class $2
# Constant Definition - post doc
snippet doc_dp
	/**
	 * ${1:undocumented constant}
	 */${2}
# Constant Definition
snippet doc_d
	/**
	 * ${3:undocumented constant}
	 */
	define(${1}, ${2});${4}
# Function - post doc
snippet doc_fp
	/**
	 * ${1:undocumented function}
	 *
	 * @return ${2:void}
	 * @author ${3:`g:snips_author`}
	 */${4}
# Function signature
snippet doc_s
	/**
	 * ${4:undocumented function}
	 *
	 * @return ${5:void}
	 * @author ${6:`g:snips_author`}
	 */
	${1}function ${2}(${3});${7}
# Function
snippet doc_f
	/**
	 * ${4:undocumented function}
	 *
	 * @return ${5:void}
	 * @author ${6:`g:snips_author`}
	 */
	${1}function ${2}(${3})
	{${7}
	}
# Header
snippet doc_h
	/**
	 * ${1}
	 *
	 * @author ${2:`g:snips_author`}
	 * @version ${3:$Id$}
	 * @copyright ${4:$2}, `strftime('%d %B, %Y')`
	 * @package ${5:default}
	 */
	
# Interface
snippet interface
	/**
	 * ${2:undocumented class}
	 *
	 * @package ${3:default}
	 * @author ${4:`g:snips_author`}
	 */
	interface ${1:}
	{
		${5}
	}
# class ...
snippet class
	/**
	 * ${1}
	 */
	class ${2:ClassName}
	{
		${3}
		/**
		 * ${4}
		 */
		${5:public} function ${6:__construct}(${7:argument})
		{
			${8:// code...}
		}
	}
# define(...)
snippet def
	define('${1}'${2});${3}
# defined(...)
snippet def?
	${1}defined('${2}')${3}
snippet wh
	while (${1:/* condition */}) {
		${2:// code...}
	}
# do ... while
snippet do
	do {
		${2:// code... }
	} while (${1:/* condition */});
snippet if
	if (${1:/* condition */}) {
		${2:// code...}
	}
snippet ifil
	<?php if (${1:/* condition */}): ?>
		${2:<!-- code... -->}
	<?php endif; ?>
snippet ife
	if (${1:/* condition */}) {
		${2:// code...}
	} else {
		${3:// code...}
	}
	${4}
snippet ifeil
	<?php if (${1:/* condition */}): ?>
		${2:<!-- html... -->}
	<?php else: ?>
		${3:<!-- html... -->}
	<?php endif; ?>
	${4}
snippet else
	else {
		${1:// code...}
	}
snippet elseif
	elseif (${1:/* condition */}) {
		${2:// code...}
	}
snippet switch
	switch ($${1:variable}) {
		case '${2:value}':
			${3:// code...}
			break;
		${5}
		default:
			${4:// code...}
			break;
	}
snippet case
	case '${1:value}':
		${2:// code...}
		break;${3}
snippet for
	for ($${2:i} = 0; $$2 < ${1:count}; $$2${3:++}) {
		${4: // code...}
	}
snippet foreach
	foreach ($${1:variable} as $${2:value}) {
		${3:// code...}
	}
snippet foreachil
	<?php foreach ($${1:variable} as $${2:value}): ?>
		${3:<!-- html... -->}
	<?php endforeach; ?>
snippet foreachk
	foreach ($${1:variable} as $${2:key} => $${3:value}) {
		${4:// code...}
	}
snippet foreachkil
	<?php foreach ($${1:variable} as $${2:key} => $${3:value}): ?>
		${4:<!-- html... -->}
	<?php endforeach; ?>
# $... = array (...)
snippet array
	$${1:arrayName} = array('${2}' => ${3});${4}
snippet try
	try {
		${2}
	} catch (${1:Exception} $e) {
	}
# lambda with closure
snippet lambda
	${1:static }function (${2:args}) use (${3:&$x, $y /*put vars in scope (closure) */}) {
		${4}
	};
# pre_dump();
snippet pd
	echo '<pre>'; var_dump(${1}); echo '</pre>';
# pre_dump(); die();
snippet pdd
	echo '<pre>'; var_dump(${1}); echo '</pre>'; die(${2:});
snippet vd
	var_dump(${1});
snippet vdd
	var_dump(${1}); die(${2:});
snippet http_redirect
	header ("HTTP/1.1 301 Moved Permanently"); 
	header ("Location: ".URL); 
	exit();
# Getters & Setters
snippet getset
	/**
	 * Gets the value of ${1:}
	 *
	 * @return ${2}
	 */
	public function get$1()
	{
		return $this->$1;
	}

	/**
	 * Sets the value of $1
	 *
	 * @param mixed $$1 ${3}
	 */
	public function set$1($$1)
	{
		$this->$1 = $$1;
		return $this;
	}
snippet rett
	return true;
snippet retf
	return false;