mysql_connect( $host, $user , $pass ); mysql_select_db( $dbase ); @mysql_query("SET NAMES 'utf8';"); @mysql_query('SET CHARACTER SET utf8;');Dzięki mooska za refresh :D
W bramce komentujemy zmianę kodowania w locie. Tutaj nam się to nie przyda ;-)
mysql_connect( $host, $user , $pass ); mysql_select_db( $dbase ); @mysql_query("SET NAMES 'utf8';"); @mysql_query('SET CHARACTER SET utf8;');Dzięki mooska za refresh :D
var regexp : RegExp = new RegExp( '^([a-zA-Z0-9]+[a-zA-Z0-9._%-]*@(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,4}) , 'i' ) ; regexp.test( emailText.text ) ;
<?php define( 'LOGGER_NEW_LINE' , "\r\n" ) ; class Logger { /** * Jedyna instancja klasy * @var Logger */ private static $_instance = null ; /** * Zwraca jedyną instancję klasy * * @return Logger */ public static function getInstance() { if( is_null( self::$_instance ) ) { self::$_instance = new Logger() ; } return self::$_instance ; } private $absolute_path ; private $logs_path ; private $date ; private $log_file ; /** * W konstruktorze następuje połaczenie z bazą danych. * * @return Logger */ private function __construct() { $this->absolute_path = dirname( __FILE__ ) . '/' ; $this->logs_path = $this->absolute_path . 'logs/' ; $this->date = date( 'Y_m_d' ) ; $this->log_file = $this->logs_path . 'logs_' . $this->date . '.log' ; $this->clearOldLogs( 5 ) ; } /** * Usuwa stare pliki logów * @return unknown_type */ private function clearOldLogs( $maxHistory ) { $files = glob( $this->logs_path.'*.log' ) ; $this->log( $files , __FUNCTION__ , __CLASS__ , __FILE__ , __LINE__ ) ; // przerwanie usunięcia jeśli plików jest zbyt mało if( sizeof( $files ) <= $maxHistory ) return ; for ($i = 0; $i < sizeof( $files ) - $maxHistory; $i++ ) { unlink( $files[ $i ] ) ; } } /** * Zapis danych do pliku * @param $data Dane do zapisania w logu * @param $function Zawsze jako parametr podawać __FUNCTION__ * @param $class Zawsze jako parametr podawać __CLASS__ * @param $file Zawsze jako parametr podawać __FILE__ * @param $line Zawsze jako parametr podawać __LINE__ */ public function log( $data , $function , $class = null , $file = null , $line = null ) { ob_start( $log_str ) ; echo date( 'H:i:s' ) , ' ' , $class , '::' , $function , ' in ' , $file , ' on line ' , $line , LOGGER_NEW_LINE ; var_dump( $data ) ; echo LOGGER_NEW_LINE , LOGGER_NEW_LINE ; $log_str = ob_get_contents() ; ob_end_clean() ; $log_str = str_replace( array( "\r\n" , "\n" ) , LOGGER_NEW_LINE , $log_str ); file_put_contents( $this->log_file , $log_str , FILE_APPEND ) ; } } ?>
Logger::getInstance()->log( $someData , __FUNCTION__ , __CLASS__ , __FILE__ , __LINE__ ) ;
class UserVO { public $_explicitType = 'vo.UserVO' ; public $login ; public $pass ; }
class User { public function getUserData() { $user = new UserVO() ; $user->login = 'myLogin' ; $user->pass = 'myPass' ; return $user ; } }Z tego co widać jest to bardzo prosty kod. Metoda getUserData zwraca na sztywno obiekt klasy UserVO. Uwagę należy zwrócić na właściwość $_explicitType. Tutaj wpisujemy alias jakiego będziemy używać po stronie flasha dla danej klasy w amfie.
public class UserVO { public var login : String ; public var pass : String ; }
registerClassAlias( 'vo.UserVO' , UserVO ) ; var nc : NetConnection = new NetConnection ; function result( o : Object ) : void { var user : UserVO = o as UserVO ; trace( user ) ; } nc.call( 'User.getUserData' , new Responder( result , null ) ) ;Ważna rolę odgrywa tutaj metoda registerClassAlias która odpowiada za rejestrację aliasu użytego w klasie UserVO, a tym samym prawidłowe mapowanie przesłanych danych na obiekt UserVO we flashu.