SlideShare ist ein Scribd-Unternehmen logo
1 von 62
徐熊瓶
CFM Migration to PHP
Training
•在此之前
•Mail System
•File IO
•XML Parser
•Web Services
在此之前在此之前
偶數加總到 10 並列出結果
2+4+6+8+10 = ?
ColdFusionColdFusion 怎麼寫怎麼寫 ??
1.1. <cfset result = 0><cfset result = 0>
2.2. <cfloop index="ii" from="1" to="10"><cfloop index="ii" from="1" to="10">
3.3. <cfif ii mod 2 eq 0><cfif ii mod 2 eq 0>
4.4. <cfset result = result + ii><cfset result = result + ii>
5.5. </cfif></cfif>
6.6. </cfloop></cfloop>
7.7. <cfoutput>Result : #result#</cfoutput><cfoutput>Result : #result#</cfoutput>
PHPPHP 又要怎麼寫又要怎麼寫 ??
1.1. <?<?
2.2. $result = 0;$result = 0;
3.3. for ($ii=0; $ii<=10; $ii++)for ($ii=0; $ii<=10; $ii++){{
4.4. if ($ii % 2 == 0)if ($ii % 2 == 0){{
5.5. $result = $result + $ii;$result = $result + $ii;
6.6. }}
7.7. }}
8.8. echo "Result : " . $result;echo "Result : " . $result;
9.9. ?>?>
不專業比較不專業比較
ColdFusionColdFusion PHPPHP
行數行數 77 99
字數字數 138138 9797
行平均字數每行平均字數每 19.719.7 10.710.7
比較結果比較結果 Orz...Orz...
勝勝
好吧!我承認這頁純粹是用來 錢的拖檯
Convert ColdFusion to PHPConvert ColdFusion to PHP
<cfset result = 0><cfset result = 0>
  ↓  ↓ (( 美少女變身美少女變身 ...)...)
$result = 0;$result = 0;
NotNot$$RResult = 0;esult = 0;
Convert ColdFusion to PHPConvert ColdFusion to PHP
<cfloop index="ii" from="<cfloop index="ii" from="11" to="10">" to="10">
芭樂芭樂芭樂芭樂芭樂芭樂 ..........
</cfloop></cfloop>
↓↓
       for ($ii=for ($ii=00; $ii<=10; $ii++); $ii<=10; $ii++){{
      芭樂芭樂芭樂芭樂芭樂芭樂 ..........
       }}
Convert ColdFusion to PHPConvert ColdFusion to PHP
     <cfif ii mod 2 eq 0><cfif ii mod 2 eq 0>
       芭樂芭樂芭樂芭樂芭樂芭樂 ..........
     </cfif></cfif>
↓↓
     if ($ii % 2 == 0)if ($ii % 2 == 0){{
     芭樂芭樂芭樂芭樂芭樂芭樂 ..........
     }}
Convert ColdFusion to PHPConvert ColdFusion to PHP
Convert ColdFusion to PHPConvert ColdFusion to PHP
等於等於 大於大於 小於小於 大於等於大於等於 小於等於小於等於
ColdFusion isColdFusion is
eqeq gtgt ltlt gtegte ltelte
PHP isPHP is
==== >> << >=>= <=<=
Convert ColdFusion to PHPConvert ColdFusion to PHP
<cfset result = result + ii><cfset result = result + ii>
↓↓
$result = $result + $ii;$result = $result + $ii;
Convert ColdFusion to PHPConvert ColdFusion to PHP
這樣也行這樣也行$result = $result + $ii;$result = $result + $ii;
↓↓
$result$result +=+= $ii;$ii;
Convert ColdFusion to PHPConvert ColdFusion to PHP
<cfoutput>Result : #result#</cfoutput><cfoutput>Result : #result#</cfoutput>
↓↓
echo "Result : "echo "Result : " .. $result;$result;
Convert ColdFusion to PHPConvert ColdFusion to PHP
OROR
echo "Result : $result ";echo "Result : $result ";
Convert ColdFusion to PHPConvert ColdFusion to PHP
But you can’tBut you can’t
echoecho ‘‘Result : $resultResult : $result ‘‘;;
      ↓↓ ( Output Result )( Output Result )
Result : $resultResult : $result
不可以!不可以!不可以!生氣~ 筆!~~丟
Convert ColdFusion to PHPConvert ColdFusion to PHP
ColdFusionColdFusion :說:說
看看 ............ 這邊, 背的語法可以醬子寫!拎這邊, 背的語法可以醬子寫!拎
是要在那邊A你是要在那邊A你 ~~ AA ~~~~ AA ~~~A~~~A 到民國幾年摳到民國幾年摳
<cfoutput><cfoutput>
第一行第一行 <br><br>
第二行第二行 <br><br>
第三行第三行 <br><br>
</cfoutput></cfoutput>
按 ................ 鍵盤,輸人不輸陣,輸陣歹看面
Convert ColdFusion to PHPConvert ColdFusion to PHP
PHPPHP :說:說
雖然雖然 OutputOutput 沒你沒你 ColdFusionColdFusion 方便,但我也是方便,但我也是
可以多行顯示的好 ?總比嗎可以多行顯示的好 ?總比嗎 OutputOutput 完後多一完後多一
堆不知那來的空白好多了!浪費網路資源的傢堆不知那來的空白好多了!浪費網路資源的傢
!伙!伙
echo “echo “
第一行第一行 <br><br>
第二行第二行 <br><br>
第三行第三行 <br><br>
進入主題
Mail System
Mail Server HowToMail Server HowTo
MTA/MUA/MDA 傻傻分不清
不是他不是他
起
來
的
懦
夫
躲
起來的懦夫躲
起來的懦夫
躲
起來的懦夫躲
起來的懦夫
躲
起來的懦夫
躲
起來的懦夫躲
起來的懦夫躲
起來的懦夫
躲
起
來
的
懦
夫
躲
起來的懦夫
躲
起來的懦夫
躲
起來的懦夫
躲
起來的懦夫
躲
起
來
的
懦
夫
躲
起來的懦夫
躲
起來的懦夫
躲
懦夫救星懦夫救星
接著再來介紹接著再來介紹 PHPPHP 界中的懦夫救星之 子特效傻界中的懦夫救星之 子特效傻
藥藥
按三餐飯後服用保證智商變零,腦袋叭哩叭哩按三餐飯後服用保證智商變零,腦袋叭哩叭哩
看到阿爸叫阿母,見到阿母叫阿爸看到阿爸叫阿母,見到阿母叫阿爸
天天沒煩惱,快樂似神仙!天天沒煩惱,快樂似神仙!
服用後的症狀應該就和我寫這段話時的狀況差不多
懦夫救星懦夫救星
<? phpinfo(); ?><? phpinfo(); ?>
GOGOGO~ 好累好累好累 ~~~
PHP MailPHP Mail
<?php<?php
$to$to  == ‘ ‘australia.customer@104.com.twaustralia.customer@104.com.tw’’;;
$subject$subject  == ’ ’ 這是主旨這是主旨‘‘ ;;
$message$message  == ’ ’ 這是內容這是內容‘‘ ;;
if ( mail($to,if ( mail($to,  $subject,$subject,  $message) ){$message) ){
echoecho ““Send Mail okSend Mail ok””;;
};};
?>?>
Send Mail
PHP mail() functionPHP mail() function 好好用好好用
bool mail (bool mail (
string $to,string $to,
string $subject,string $subject,
string $messagestring $message
[[
, string $additional_headers, string $additional_headers
[, string $additional_parameters][, string $additional_parameters]
]]
)) 使用 mb_send_mail() 可能會更好
不能用不能用
但是我們但是我們 ........
使用寫 方式寄送郵件檔使用寫 方式寄送郵件檔
<?<?
$_mail_to = "chonpin.hsu@104.com.tw";$_mail_to = "chonpin.hsu@104.com.tw";
$_mail_subject = "php$_mail_subject = "php 寫 方式寄檔寫 方式寄檔 Mail";Mail";
$_mail_body = "$_mail_body = " 這是信件 容內這是信件 容內 ";";
$_str_mail =$_str_mail =
"From: chonpin.hsu@104.com.tw" . chr(10) ."From: chonpin.hsu@104.com.tw" . chr(10) .
"To: " . $_mail_to . chr(10) ."To: " . $_mail_to . chr(10) .
"Date: " . date("y.m.d H:i:s") . chr(10) ."Date: " . date("y.m.d H:i:s") . chr(10) .
"Subject: " . $_mail_subject . chr(10) . chr(10) ."Subject: " . $_mail_subject . chr(10) . chr(10) .
$_mail_body . chr(10);$_mail_body . chr(10);
$fp=fopen($fp=fopen('/opt/sendmail/oms03/send1/m_'.rand().'.hmail','w''/opt/sendmail/oms03/send1/m_'.rand().'.hmail','w'););
fwrite(fwrite($fp, $_str_mail$fp, $_str_mail););
fclosefclose($fp($fp););
?>?>
信件寄出信件寄出
打完收工打完收工
File IO
File IOFile IO 三部曲三部曲
1.1.開檔開檔
2.2.讀讀 // 寫檔寫檔
3.3.關檔關檔
fopen() functionfopen() function
resource fopen (resource fopen (
string $filenamestring $filename or URLor URL,,
string $modestring $mode
[, bool $use_include_path [, resource $context]][, bool $use_include_path [, resource $context]]
))
Example :Example :
$fp=fopen('/opt/sendmail/oms03/send1/mail.hmail', 'wb‘);$fp=fopen('/opt/sendmail/oms03/send1/mail.hmail', 'wb‘);
$fp=fopen('http://www.104.com.tw', 'wb‘);$fp=fopen('http://www.104.com.tw', 'wb‘);
fopen() using modefopen() using mode
mod
e
Description
r 僅讀取 ( 案並需存在檔 )
r+ 讀或寫 ( 案並需存在,寫入為覆蓋模式檔 )
w 僅寫入 ( 案不存在時將自動建立 案檔 檔 )
w+ 讀或寫 ( 案不存在時將自動建立 案檔 檔 )
a 僅寫入的附加模式 ( 案不存在時將自動建立 案檔 檔 )
a+ 讀或寫的附加模式 ( 案不存在時將自動建立 案檔 檔 )
x 僅寫入的建立模式 ( 案存在時將回傳檔 false 值 )
x+ 讀或寫的建立模式 ( 案存在時將回傳檔 false 值 )
fwrite() functionfwrite() function
int fwrite (int fwrite (
resource $handle,resource $handle,
string $stringstring $string
[, int $length][, int $length]
))
Example :Example :
fwrite($fp, $_str_mail);fwrite($fp, $_str_mail);
fread() functionfread() function
string fread (string fread (
resource $handleresource $handle
, int $length, int $length
))
Example :Example :
while ( !feof($fp) ) {while ( !feof($fp) ) {
$tmp .= fgets($fp$tmp .= fgets($fp, 1024, 1024););
}}
Max length : 8192
fgets() functionfgets() function
string fgets (string fgets (
resource $handleresource $handle
, int $length, int $length
))
Example :Example :
while ( !feof($fp) ) {while ( !feof($fp) ) {
$tmp .= fgets($fp$tmp .= fgets($fp, 1024, 1024););
}} fgets()
fread()fread() 和和 fgets()fgets() 的差異的差異
某文字 內容:檔某文字 內容:檔
abcdefgabcdefg
123456789123456789
freadfread($fp, 10);($fp, 10); fgetsfgets($fp, 10)($fp, 10)
abcdefgabcdefg
1212
abcdefgabcdefg
fclose() functionfclose() function
bool fclose ( resource $handle )bool fclose ( resource $handle )
Example :Example :
fclose($fp);fclose($fp);
這個最簡單,醬子就好了
XML Parse
同場加映:
WhatWhat’’s XMLs XML
可延伸標示可延伸標示 (( 記記 )) 語言語言
(( eXtensible Markup LanguageeXtensible Markup Language ,簡稱,簡稱
XMLXML ))
XMLXML 是一種數據存儲格式。它沒有定義是一種數據存儲格式。它沒有定義
保存什 數據,也沒有定義數據的格式。麽保存什 數據,也沒有定義數據的格式。麽
XMLXML 只是定義了標記和這些標記的屬性。只是定義了標記和這些標記的屬性。
WhatWhat’’s XMLs XML
XMLXML 被廣泛用來作為跨平台之間互動數據的形被廣泛用來作為跨平台之間互動數據的形
式式
,主要針對數據的內容,通過不同的格式化描述,主要針對數據的內容,通過不同的格式化描述
手段,可以完成最終的形式表達(生成對應的手段,可以完成最終的形式表達(生成對應的
HTMLHTML ,, PDFPDF 或者其他的 案格式)。檔或者其他的 案格式)。檔
XMLXML 設計用來傳送及攜帶資料資訊,不用來表設計用來傳送及攜帶資料資訊,不用來表
現現
或展示資料,或展示資料, HTMLHTML 語言則用來表現資料,所語言則用來表現資料,所
以以
XMLXML 長這樣長這樣
<jobs><jobs>
<job><job>
<company><company> 骨哥高讚塔骨哥高讚塔 </company></company>
<jobname><jobname> 大樓管理員大樓管理員 </jobname></jobname>
</job></job>
<job><job>
<company><company> 啞虎動物園啞虎動物園 </company></company>
<jobname><jobname> 售票員售票員 </jobname></jobname>
</job></job>
</jobs></jobs>
XML ParseXML Parse
<?<?
$url =$url =
'http://www.104.com.tw/hotjob.'http://www.104.com.tw/hotjob.xmlxml';';
$fp = fopen($url, 'r');$fp = fopen($url, 'r');
$tmp = '';$tmp = '';
while (!feof($fp)) {while (!feof($fp)) {
$tmp .= fgets($fp);$tmp .= fgets($fp);
}}
?>?> 掯 ..... 我真是他 X 的天才,現學現賣! 爆了!屌
XML ParseXML Parse
使用使用 File openFile open 來來 Parse XMLParse XML 也是種方也是種方
式式
先取得先取得 XMLXML 容後內容後內
再用再用 String functionString function 去做分析去做分析
聰明、利害、高啊聰明、利害、高啊 ~~~~~~~~
只是只是 ....................................
XML ParseXML Parse
  我不知道要等到那一天才能  我不知道要等到那一天才能
 得償所望 得償所望 ....
  得得得兒  得得得兒 ........
   得償所望   得償所望 ............
使用使用 DOMDOM 進行進行 XML ParseXML Parse
<?php<?php
$doc = new DOMDocument();$doc = new DOMDocument();
$doc->load( 'http://tw.news.yahoo.com/rss/feel_oddlyenough' );$doc->load( 'http://tw.news.yahoo.com/rss/feel_oddlyenough' );
$items$items = $doc->getElementsByTagName("item");= $doc->getElementsByTagName("item");
foreach (foreach ($items$items asas $item$item){){
$titles$titles == $item$item->getElementsByTagName("title");->getElementsByTagName("title");
$title$title == $titles$titles->item(0)->nodeValue;->item(0)->nodeValue;
echoecho $title$title.<br>";.<br>";
}}
?>?>
簡單、清楚又有型簡單、清楚又有型
使用使用 SAXSAX 進行進行 XML ParseXML Parse
SAXSAX 是輕量級的是輕量級的 XMLXML 解析器,擅長巨型解析器,擅長巨型
文件文件
!這是件好事嗯!這是件好事嗯
SAXSAX 的回調的回調 (callback)(callback) 是件非常麻煩的事是件非常麻煩的事
!麻煩聽起來就不是件好事噢!麻煩聽起來就不是件好事噢
Sample CodeSample Code 落落長落落長
Shit!!Shit!! 致命傷致命傷
使用正則表達式進行使用正則表達式進行 XML ParseXML Parse
資格不符資格不符
取消參賽權取消參賽權
XML ParseXML Parse 冠軍是冠軍是 ........
DOMDOM
SAXSAX 不用灰心,不用灰心, REXREX 還是愛你滴還是愛你滴
Web Services
什麼是什麼是 Web ServicesWeb Services
Web ServicesWeb Services 是一種服務元件,它透過是一種服務元件,它透過
WebWeb
通訊協定及資料格式的開放式標準通訊協定及資料格式的開放式標準 (( 如如
XMLXML 、、
HTTPHTTP 及及 SOAPSOAP 等等 )) 為其他應用程式提供服為其他應用程式提供服
務。務。
什麼是什麼是 Web ServicesWeb Services
• 提供服務的元件提供服務的元件
• 以以 WebWeb 的開放標準為基礎的開放標準為基礎
什麼是什麼是 Web ServicesWeb Services
什麼是什麼是 Web ServicesWeb Services
PHPPHP 如何呼叫如何呼叫 Web ServicesWeb Services
$content='';$content='';
$search_wsdl="$search_wsdl="http://search.e104.com.tw/servicehttp://search.e104.com.tw/service
s/IndexService?wsdls/IndexService?wsdl";";
$searchObj= array($searchObj= array(
'indexType' =>'pda.CustprofileOn','indexType' =>'pda.CustprofileOn',
'executeFrom' => 'PHP_TEST','executeFrom' => 'PHP_TEST',
'page' => '1', 'pageSize' => '10','page' => '1', 'pageSize' => '10',
'mainCondition' => '*‘'mainCondition' => '*‘
);); Search Web Services
PHPPHP 如何呼叫如何呼叫 Web ServicesWeb Services
$c = new SoapClient($search_wsdl);$c = new SoapClient($search_wsdl);
try {try {
$r = $c->search(array('config'=>$searchObj));$r = $c->search(array('config'=>$searchObj));
$content = $r->out;$content = $r->out;
} catch (SoapFault $exception) {} catch (SoapFault $exception) {
$content='$content=' 使用失敗使用失敗 ';';
}}
PHPPHP 如何呼叫如何呼叫 Web ServicesWeb Services
$doc = new DOMDocument();$doc = new DOMDocument();
$doc->$doc->loadXMLloadXML($content);($content);
$items = $doc->getElementsByTagName("ITEM");$items = $doc->getElementsByTagName("ITEM");
foreach ($items as $item){foreach ($items as $item){
$titles = $item->getElementsByTagName("NAME");$titles = $item->getElementsByTagName("NAME");
$title = $titles->item(0)->nodeValue;$title = $titles->item(0)->nodeValue;
echo $title."<br>";echo $title."<br>";
}}
Result
打完收工
九月 容內
SQLRelay
PHP Framework
Q&A

Weitere ähnliche Inhalte

Was ist angesagt?

PHPUnit 入門介紹
PHPUnit 入門介紹PHPUnit 入門介紹
PHPUnit 入門介紹Jace Ju
 
Python xmlrpc-odoo
Python xmlrpc-odooPython xmlrpc-odoo
Python xmlrpc-odoorobin yang
 
jsp基础速成精华讲解
jsp基础速成精华讲解jsp基础速成精华讲解
jsp基础速成精华讲解wensheng wei
 
Mongodb
MongodbMongodb
Mongodbbj
 
OpenWebSchool - 03 - PHP Part II
OpenWebSchool - 03 - PHP Part IIOpenWebSchool - 03 - PHP Part II
OpenWebSchool - 03 - PHP Part IIHung-yu Lin
 
Introduction to Parse JavaScript SDK
Introduction to Parse JavaScript SDKIntroduction to Parse JavaScript SDK
Introduction to Parse JavaScript SDK維佋 唐
 
解決! メール送信
解決! メール送信解決! メール送信
解決! メール送信kmiyako
 
PHPUnit + Xdebug 单元测试技术
PHPUnit + Xdebug 单元测试技术PHPUnit + Xdebug 单元测试技术
PHPUnit + Xdebug 单元测试技术hoopchina
 
Perl在nginx里的应用
Perl在nginx里的应用Perl在nginx里的应用
Perl在nginx里的应用琛琳 饶
 
dbug in mysql
dbug in mysqldbug in mysql
dbug in mysqlTim Chou
 
那 Angular 那 AJAX 那 RESTful
那 Angular 那 AJAX 那 RESTful那 Angular 那 AJAX 那 RESTful
那 Angular 那 AJAX 那 RESTful功豪 魏
 
深入了解Memcache
深入了解Memcache深入了解Memcache
深入了解Memcachezubin Jiang
 
Flex 4.5 action data communication
Flex 4.5 action data communicationFlex 4.5 action data communication
Flex 4.5 action data communicationjexchan
 
JavaScript现代化排错实践
JavaScript现代化排错实践JavaScript现代化排错实践
JavaScript现代化排错实践jeffz
 
第一次用 PHPUnit 寫測試就上手
第一次用 PHPUnit 寫測試就上手第一次用 PHPUnit 寫測試就上手
第一次用 PHPUnit 寫測試就上手Yi-Ming Huang
 
Patterns in Zend Framework
Patterns in Zend FrameworkPatterns in Zend Framework
Patterns in Zend FrameworkJace Ju
 
Bash shell script 教學
Bash shell script 教學Bash shell script 教學
Bash shell script 教學Ming-Sian Lin
 

Was ist angesagt? (20)

PHPUnit 入門介紹
PHPUnit 入門介紹PHPUnit 入門介紹
PHPUnit 入門介紹
 
Json知识分享
Json知识分享Json知识分享
Json知识分享
 
Python xmlrpc-odoo
Python xmlrpc-odooPython xmlrpc-odoo
Python xmlrpc-odoo
 
Ooredis
OoredisOoredis
Ooredis
 
jsp基础速成精华讲解
jsp基础速成精华讲解jsp基础速成精华讲解
jsp基础速成精华讲解
 
Mongodb
MongodbMongodb
Mongodb
 
OpenWebSchool - 03 - PHP Part II
OpenWebSchool - 03 - PHP Part IIOpenWebSchool - 03 - PHP Part II
OpenWebSchool - 03 - PHP Part II
 
Introduction to Parse JavaScript SDK
Introduction to Parse JavaScript SDKIntroduction to Parse JavaScript SDK
Introduction to Parse JavaScript SDK
 
解決! メール送信
解決! メール送信解決! メール送信
解決! メール送信
 
PHPUnit + Xdebug 单元测试技术
PHPUnit + Xdebug 单元测试技术PHPUnit + Xdebug 单元测试技术
PHPUnit + Xdebug 单元测试技术
 
Perl在nginx里的应用
Perl在nginx里的应用Perl在nginx里的应用
Perl在nginx里的应用
 
PHP
PHPPHP
PHP
 
dbug in mysql
dbug in mysqldbug in mysql
dbug in mysql
 
那 Angular 那 AJAX 那 RESTful
那 Angular 那 AJAX 那 RESTful那 Angular 那 AJAX 那 RESTful
那 Angular 那 AJAX 那 RESTful
 
深入了解Memcache
深入了解Memcache深入了解Memcache
深入了解Memcache
 
Flex 4.5 action data communication
Flex 4.5 action data communicationFlex 4.5 action data communication
Flex 4.5 action data communication
 
JavaScript现代化排错实践
JavaScript现代化排错实践JavaScript现代化排错实践
JavaScript现代化排错实践
 
第一次用 PHPUnit 寫測試就上手
第一次用 PHPUnit 寫測試就上手第一次用 PHPUnit 寫測試就上手
第一次用 PHPUnit 寫測試就上手
 
Patterns in Zend Framework
Patterns in Zend FrameworkPatterns in Zend Framework
Patterns in Zend Framework
 
Bash shell script 教學
Bash shell script 教學Bash shell script 教學
Bash shell script 教學
 

Ähnlich wie cfm to php training

[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具Shengyou Fan
 
PHP 語法基礎與物件導向
PHP 語法基礎與物件導向PHP 語法基礎與物件導向
PHP 語法基礎與物件導向Shengyou Fan
 
2009 CSBB LAB 新生訓練
2009 CSBB LAB 新生訓練2009 CSBB LAB 新生訓練
2009 CSBB LAB 新生訓練Abner Huang
 
JavaScript Engine
JavaScript EngineJavaScript Engine
JavaScript Enginejay li
 
Web Caching Architecture and Design
Web Caching Architecture and DesignWeb Caching Architecture and Design
Web Caching Architecture and DesignHo Kim
 
走马观花— Haskell Web 开发
走马观花— Haskell Web 开发走马观花— Haskell Web 开发
走马观花— Haskell Web 开发Gump Law
 
第三方内容开发最佳实践
第三方内容开发最佳实践第三方内容开发最佳实践
第三方内容开发最佳实践taobao.com
 
Discuz技术交流
Discuz技术交流Discuz技术交流
Discuz技术交流pigso
 
Javascript autoload
Javascript autoloadJavascript autoload
Javascript autoloadjay li
 
Erlang Practice
Erlang PracticeErlang Practice
Erlang Practicelitaocheng
 
Node.js开发体验
Node.js开发体验Node.js开发体验
Node.js开发体验QLeelulu
 
智能Dns工作流程及配置
智能Dns工作流程及配置智能Dns工作流程及配置
智能Dns工作流程及配置Yiwei Ma
 
Php for fe
Php for fePhp for fe
Php for fejay li
 
JCConf2015: groovy to gradle
 JCConf2015: groovy to gradle JCConf2015: groovy to gradle
JCConf2015: groovy to gradleChing Yi Chan
 
Zencart网站模板复制过程
Zencart网站模板复制过程Zencart网站模板复制过程
Zencart网站模板复制过程xiaochenlbm
 
Migrations 與 Schema操作
Migrations 與 Schema操作Migrations 與 Schema操作
Migrations 與 Schema操作Shengyou Fan
 
部分PHP问题总结[转贴]
部分PHP问题总结[转贴]部分PHP问题总结[转贴]
部分PHP问题总结[转贴]wensheng wei
 

Ähnlich wie cfm to php training (20)

[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
 
PHP 語法基礎與物件導向
PHP 語法基礎與物件導向PHP 語法基礎與物件導向
PHP 語法基礎與物件導向
 
2009 CSBB LAB 新生訓練
2009 CSBB LAB 新生訓練2009 CSBB LAB 新生訓練
2009 CSBB LAB 新生訓練
 
JavaScript Engine
JavaScript EngineJavaScript Engine
JavaScript Engine
 
Web Caching Architecture and Design
Web Caching Architecture and DesignWeb Caching Architecture and Design
Web Caching Architecture and Design
 
走马观花— Haskell Web 开发
走马观花— Haskell Web 开发走马观花— Haskell Web 开发
走马观花— Haskell Web 开发
 
CRUD 綜合運用
CRUD 綜合運用CRUD 綜合運用
CRUD 綜合運用
 
第三方内容开发最佳实践
第三方内容开发最佳实践第三方内容开发最佳实践
第三方内容开发最佳实践
 
Discuz技术交流
Discuz技术交流Discuz技术交流
Discuz技术交流
 
Javascript autoload
Javascript autoloadJavascript autoload
Javascript autoload
 
Erlang Practice
Erlang PracticeErlang Practice
Erlang Practice
 
Node.js开发体验
Node.js开发体验Node.js开发体验
Node.js开发体验
 
智能Dns工作流程及配置
智能Dns工作流程及配置智能Dns工作流程及配置
智能Dns工作流程及配置
 
Php for fe
Php for fePhp for fe
Php for fe
 
JCConf2015: groovy to gradle
 JCConf2015: groovy to gradle JCConf2015: groovy to gradle
JCConf2015: groovy to gradle
 
Zencart网站模板复制过程
Zencart网站模板复制过程Zencart网站模板复制过程
Zencart网站模板复制过程
 
Migrations 與 Schema操作
Migrations 與 Schema操作Migrations 與 Schema操作
Migrations 與 Schema操作
 
Php
PhpPhp
Php
 
Ooredis
OoredisOoredis
Ooredis
 
部分PHP问题总结[转贴]
部分PHP问题总结[转贴]部分PHP问题总结[转贴]
部分PHP问题总结[转贴]
 

Mehr von Chonpin HSU

reading group 成為卓越程式設計師的38項必修法則(20~23)
reading group 成為卓越程式設計師的38項必修法則(20~23)reading group 成為卓越程式設計師的38項必修法則(20~23)
reading group 成為卓越程式設計師的38項必修法則(20~23)Chonpin HSU
 
滑鼠設計輕鬆聊
滑鼠設計輕鬆聊滑鼠設計輕鬆聊
滑鼠設計輕鬆聊Chonpin HSU
 
training and sharing about clean code
training and sharing about clean codetraining and sharing about clean code
training and sharing about clean codeChonpin HSU
 
algorithm research and sharing
algorithm research and sharingalgorithm research and sharing
algorithm research and sharingChonpin HSU
 
TopDB data transfer
TopDB data transferTopDB data transfer
TopDB data transferChonpin HSU
 
Buy the way web project report
Buy the way web project report Buy the way web project report
Buy the way web project report Chonpin HSU
 

Mehr von Chonpin HSU (6)

reading group 成為卓越程式設計師的38項必修法則(20~23)
reading group 成為卓越程式設計師的38項必修法則(20~23)reading group 成為卓越程式設計師的38項必修法則(20~23)
reading group 成為卓越程式設計師的38項必修法則(20~23)
 
滑鼠設計輕鬆聊
滑鼠設計輕鬆聊滑鼠設計輕鬆聊
滑鼠設計輕鬆聊
 
training and sharing about clean code
training and sharing about clean codetraining and sharing about clean code
training and sharing about clean code
 
algorithm research and sharing
algorithm research and sharingalgorithm research and sharing
algorithm research and sharing
 
TopDB data transfer
TopDB data transferTopDB data transfer
TopDB data transfer
 
Buy the way web project report
Buy the way web project report Buy the way web project report
Buy the way web project report
 

cfm to php training

  • 5. ColdFusionColdFusion 怎麼寫怎麼寫 ?? 1.1. <cfset result = 0><cfset result = 0> 2.2. <cfloop index="ii" from="1" to="10"><cfloop index="ii" from="1" to="10"> 3.3. <cfif ii mod 2 eq 0><cfif ii mod 2 eq 0> 4.4. <cfset result = result + ii><cfset result = result + ii> 5.5. </cfif></cfif> 6.6. </cfloop></cfloop> 7.7. <cfoutput>Result : #result#</cfoutput><cfoutput>Result : #result#</cfoutput>
  • 6. PHPPHP 又要怎麼寫又要怎麼寫 ?? 1.1. <?<? 2.2. $result = 0;$result = 0; 3.3. for ($ii=0; $ii<=10; $ii++)for ($ii=0; $ii<=10; $ii++){{ 4.4. if ($ii % 2 == 0)if ($ii % 2 == 0){{ 5.5. $result = $result + $ii;$result = $result + $ii; 6.6. }} 7.7. }} 8.8. echo "Result : " . $result;echo "Result : " . $result; 9.9. ?>?>
  • 7. 不專業比較不專業比較 ColdFusionColdFusion PHPPHP 行數行數 77 99 字數字數 138138 9797 行平均字數每行平均字數每 19.719.7 10.710.7 比較結果比較結果 Orz...Orz... 勝勝 好吧!我承認這頁純粹是用來 錢的拖檯
  • 8. Convert ColdFusion to PHPConvert ColdFusion to PHP <cfset result = 0><cfset result = 0>   ↓  ↓ (( 美少女變身美少女變身 ...)...) $result = 0;$result = 0;
  • 9. NotNot$$RResult = 0;esult = 0; Convert ColdFusion to PHPConvert ColdFusion to PHP
  • 10. <cfloop index="ii" from="<cfloop index="ii" from="11" to="10">" to="10"> 芭樂芭樂芭樂芭樂芭樂芭樂 .......... </cfloop></cfloop> ↓↓        for ($ii=for ($ii=00; $ii<=10; $ii++); $ii<=10; $ii++){{       芭樂芭樂芭樂芭樂芭樂芭樂 ..........        }} Convert ColdFusion to PHPConvert ColdFusion to PHP
  • 11.      <cfif ii mod 2 eq 0><cfif ii mod 2 eq 0>        芭樂芭樂芭樂芭樂芭樂芭樂 ..........      </cfif></cfif> ↓↓      if ($ii % 2 == 0)if ($ii % 2 == 0){{      芭樂芭樂芭樂芭樂芭樂芭樂 ..........      }} Convert ColdFusion to PHPConvert ColdFusion to PHP
  • 12. Convert ColdFusion to PHPConvert ColdFusion to PHP 等於等於 大於大於 小於小於 大於等於大於等於 小於等於小於等於 ColdFusion isColdFusion is eqeq gtgt ltlt gtegte ltelte PHP isPHP is ==== >> << >=>= <=<=
  • 13. Convert ColdFusion to PHPConvert ColdFusion to PHP <cfset result = result + ii><cfset result = result + ii> ↓↓ $result = $result + $ii;$result = $result + $ii;
  • 14. Convert ColdFusion to PHPConvert ColdFusion to PHP 這樣也行這樣也行$result = $result + $ii;$result = $result + $ii; ↓↓ $result$result +=+= $ii;$ii;
  • 15. Convert ColdFusion to PHPConvert ColdFusion to PHP <cfoutput>Result : #result#</cfoutput><cfoutput>Result : #result#</cfoutput> ↓↓ echo "Result : "echo "Result : " .. $result;$result;
  • 16. Convert ColdFusion to PHPConvert ColdFusion to PHP OROR echo "Result : $result ";echo "Result : $result ";
  • 17. Convert ColdFusion to PHPConvert ColdFusion to PHP But you can’tBut you can’t echoecho ‘‘Result : $resultResult : $result ‘‘;;       ↓↓ ( Output Result )( Output Result ) Result : $resultResult : $result 不可以!不可以!不可以!生氣~ 筆!~~丟
  • 18. Convert ColdFusion to PHPConvert ColdFusion to PHP ColdFusionColdFusion :說:說 看看 ............ 這邊, 背的語法可以醬子寫!拎這邊, 背的語法可以醬子寫!拎 是要在那邊A你是要在那邊A你 ~~ AA ~~~~ AA ~~~A~~~A 到民國幾年摳到民國幾年摳 <cfoutput><cfoutput> 第一行第一行 <br><br> 第二行第二行 <br><br> 第三行第三行 <br><br> </cfoutput></cfoutput> 按 ................ 鍵盤,輸人不輸陣,輸陣歹看面
  • 19. Convert ColdFusion to PHPConvert ColdFusion to PHP PHPPHP :說:說 雖然雖然 OutputOutput 沒你沒你 ColdFusionColdFusion 方便,但我也是方便,但我也是 可以多行顯示的好 ?總比嗎可以多行顯示的好 ?總比嗎 OutputOutput 完後多一完後多一 堆不知那來的空白好多了!浪費網路資源的傢堆不知那來的空白好多了!浪費網路資源的傢 !伙!伙 echo “echo “ 第一行第一行 <br><br> 第二行第二行 <br><br> 第三行第三行 <br><br>
  • 22. Mail Server HowToMail Server HowTo MTA/MUA/MDA 傻傻分不清
  • 23.
  • 25. 懦夫救星懦夫救星 接著再來介紹接著再來介紹 PHPPHP 界中的懦夫救星之 子特效傻界中的懦夫救星之 子特效傻 藥藥 按三餐飯後服用保證智商變零,腦袋叭哩叭哩按三餐飯後服用保證智商變零,腦袋叭哩叭哩 看到阿爸叫阿母,見到阿母叫阿爸看到阿爸叫阿母,見到阿母叫阿爸 天天沒煩惱,快樂似神仙!天天沒煩惱,快樂似神仙! 服用後的症狀應該就和我寫這段話時的狀況差不多
  • 26. 懦夫救星懦夫救星 <? phpinfo(); ?><? phpinfo(); ?> GOGOGO~ 好累好累好累 ~~~
  • 27. PHP MailPHP Mail <?php<?php $to$to  == ‘ ‘australia.customer@104.com.twaustralia.customer@104.com.tw’’;; $subject$subject  == ’ ’ 這是主旨這是主旨‘‘ ;; $message$message  == ’ ’ 這是內容這是內容‘‘ ;; if ( mail($to,if ( mail($to,  $subject,$subject,  $message) ){$message) ){ echoecho ““Send Mail okSend Mail ok””;; };}; ?>?> Send Mail
  • 28. PHP mail() functionPHP mail() function 好好用好好用 bool mail (bool mail ( string $to,string $to, string $subject,string $subject, string $messagestring $message [[ , string $additional_headers, string $additional_headers [, string $additional_parameters][, string $additional_parameters] ]] )) 使用 mb_send_mail() 可能會更好
  • 30. 使用寫 方式寄送郵件檔使用寫 方式寄送郵件檔 <?<? $_mail_to = "chonpin.hsu@104.com.tw";$_mail_to = "chonpin.hsu@104.com.tw"; $_mail_subject = "php$_mail_subject = "php 寫 方式寄檔寫 方式寄檔 Mail";Mail"; $_mail_body = "$_mail_body = " 這是信件 容內這是信件 容內 ";"; $_str_mail =$_str_mail = "From: chonpin.hsu@104.com.tw" . chr(10) ."From: chonpin.hsu@104.com.tw" . chr(10) . "To: " . $_mail_to . chr(10) ."To: " . $_mail_to . chr(10) . "Date: " . date("y.m.d H:i:s") . chr(10) ."Date: " . date("y.m.d H:i:s") . chr(10) . "Subject: " . $_mail_subject . chr(10) . chr(10) ."Subject: " . $_mail_subject . chr(10) . chr(10) . $_mail_body . chr(10);$_mail_body . chr(10); $fp=fopen($fp=fopen('/opt/sendmail/oms03/send1/m_'.rand().'.hmail','w''/opt/sendmail/oms03/send1/m_'.rand().'.hmail','w');); fwrite(fwrite($fp, $_str_mail$fp, $_str_mail);); fclosefclose($fp($fp);); ?>?>
  • 33. File IOFile IO 三部曲三部曲 1.1.開檔開檔 2.2.讀讀 // 寫檔寫檔 3.3.關檔關檔
  • 34. fopen() functionfopen() function resource fopen (resource fopen ( string $filenamestring $filename or URLor URL,, string $modestring $mode [, bool $use_include_path [, resource $context]][, bool $use_include_path [, resource $context]] )) Example :Example : $fp=fopen('/opt/sendmail/oms03/send1/mail.hmail', 'wb‘);$fp=fopen('/opt/sendmail/oms03/send1/mail.hmail', 'wb‘); $fp=fopen('http://www.104.com.tw', 'wb‘);$fp=fopen('http://www.104.com.tw', 'wb‘);
  • 35. fopen() using modefopen() using mode mod e Description r 僅讀取 ( 案並需存在檔 ) r+ 讀或寫 ( 案並需存在,寫入為覆蓋模式檔 ) w 僅寫入 ( 案不存在時將自動建立 案檔 檔 ) w+ 讀或寫 ( 案不存在時將自動建立 案檔 檔 ) a 僅寫入的附加模式 ( 案不存在時將自動建立 案檔 檔 ) a+ 讀或寫的附加模式 ( 案不存在時將自動建立 案檔 檔 ) x 僅寫入的建立模式 ( 案存在時將回傳檔 false 值 ) x+ 讀或寫的建立模式 ( 案存在時將回傳檔 false 值 )
  • 36. fwrite() functionfwrite() function int fwrite (int fwrite ( resource $handle,resource $handle, string $stringstring $string [, int $length][, int $length] )) Example :Example : fwrite($fp, $_str_mail);fwrite($fp, $_str_mail);
  • 37. fread() functionfread() function string fread (string fread ( resource $handleresource $handle , int $length, int $length )) Example :Example : while ( !feof($fp) ) {while ( !feof($fp) ) { $tmp .= fgets($fp$tmp .= fgets($fp, 1024, 1024);); }} Max length : 8192
  • 38. fgets() functionfgets() function string fgets (string fgets ( resource $handleresource $handle , int $length, int $length )) Example :Example : while ( !feof($fp) ) {while ( !feof($fp) ) { $tmp .= fgets($fp$tmp .= fgets($fp, 1024, 1024);); }} fgets()
  • 39. fread()fread() 和和 fgets()fgets() 的差異的差異 某文字 內容:檔某文字 內容:檔 abcdefgabcdefg 123456789123456789 freadfread($fp, 10);($fp, 10); fgetsfgets($fp, 10)($fp, 10) abcdefgabcdefg 1212 abcdefgabcdefg
  • 40. fclose() functionfclose() function bool fclose ( resource $handle )bool fclose ( resource $handle ) Example :Example : fclose($fp);fclose($fp); 這個最簡單,醬子就好了
  • 42. WhatWhat’’s XMLs XML 可延伸標示可延伸標示 (( 記記 )) 語言語言 (( eXtensible Markup LanguageeXtensible Markup Language ,簡稱,簡稱 XMLXML )) XMLXML 是一種數據存儲格式。它沒有定義是一種數據存儲格式。它沒有定義 保存什 數據,也沒有定義數據的格式。麽保存什 數據,也沒有定義數據的格式。麽 XMLXML 只是定義了標記和這些標記的屬性。只是定義了標記和這些標記的屬性。
  • 43. WhatWhat’’s XMLs XML XMLXML 被廣泛用來作為跨平台之間互動數據的形被廣泛用來作為跨平台之間互動數據的形 式式 ,主要針對數據的內容,通過不同的格式化描述,主要針對數據的內容,通過不同的格式化描述 手段,可以完成最終的形式表達(生成對應的手段,可以完成最終的形式表達(生成對應的 HTMLHTML ,, PDFPDF 或者其他的 案格式)。檔或者其他的 案格式)。檔 XMLXML 設計用來傳送及攜帶資料資訊,不用來表設計用來傳送及攜帶資料資訊,不用來表 現現 或展示資料,或展示資料, HTMLHTML 語言則用來表現資料,所語言則用來表現資料,所 以以
  • 44. XMLXML 長這樣長這樣 <jobs><jobs> <job><job> <company><company> 骨哥高讚塔骨哥高讚塔 </company></company> <jobname><jobname> 大樓管理員大樓管理員 </jobname></jobname> </job></job> <job><job> <company><company> 啞虎動物園啞虎動物園 </company></company> <jobname><jobname> 售票員售票員 </jobname></jobname> </job></job> </jobs></jobs>
  • 45. XML ParseXML Parse <?<? $url =$url = 'http://www.104.com.tw/hotjob.'http://www.104.com.tw/hotjob.xmlxml';'; $fp = fopen($url, 'r');$fp = fopen($url, 'r'); $tmp = '';$tmp = ''; while (!feof($fp)) {while (!feof($fp)) { $tmp .= fgets($fp);$tmp .= fgets($fp); }} ?>?> 掯 ..... 我真是他 X 的天才,現學現賣! 爆了!屌
  • 46. XML ParseXML Parse 使用使用 File openFile open 來來 Parse XMLParse XML 也是種方也是種方 式式 先取得先取得 XMLXML 容後內容後內 再用再用 String functionString function 去做分析去做分析 聰明、利害、高啊聰明、利害、高啊 ~~~~~~~~ 只是只是 ....................................
  • 47. XML ParseXML Parse   我不知道要等到那一天才能  我不知道要等到那一天才能  得償所望 得償所望 ....   得得得兒  得得得兒 ........    得償所望   得償所望 ............
  • 48. 使用使用 DOMDOM 進行進行 XML ParseXML Parse <?php<?php $doc = new DOMDocument();$doc = new DOMDocument(); $doc->load( 'http://tw.news.yahoo.com/rss/feel_oddlyenough' );$doc->load( 'http://tw.news.yahoo.com/rss/feel_oddlyenough' ); $items$items = $doc->getElementsByTagName("item");= $doc->getElementsByTagName("item"); foreach (foreach ($items$items asas $item$item){){ $titles$titles == $item$item->getElementsByTagName("title");->getElementsByTagName("title"); $title$title == $titles$titles->item(0)->nodeValue;->item(0)->nodeValue; echoecho $title$title.<br>";.<br>"; }} ?>?> 簡單、清楚又有型簡單、清楚又有型
  • 49. 使用使用 SAXSAX 進行進行 XML ParseXML Parse SAXSAX 是輕量級的是輕量級的 XMLXML 解析器,擅長巨型解析器,擅長巨型 文件文件 !這是件好事嗯!這是件好事嗯 SAXSAX 的回調的回調 (callback)(callback) 是件非常麻煩的事是件非常麻煩的事 !麻煩聽起來就不是件好事噢!麻煩聽起來就不是件好事噢 Sample CodeSample Code 落落長落落長 Shit!!Shit!! 致命傷致命傷
  • 50. 使用正則表達式進行使用正則表達式進行 XML ParseXML Parse 資格不符資格不符 取消參賽權取消參賽權
  • 51. XML ParseXML Parse 冠軍是冠軍是 ........ DOMDOM SAXSAX 不用灰心,不用灰心, REXREX 還是愛你滴還是愛你滴
  • 53. 什麼是什麼是 Web ServicesWeb Services Web ServicesWeb Services 是一種服務元件,它透過是一種服務元件,它透過 WebWeb 通訊協定及資料格式的開放式標準通訊協定及資料格式的開放式標準 (( 如如 XMLXML 、、 HTTPHTTP 及及 SOAPSOAP 等等 )) 為其他應用程式提供服為其他應用程式提供服 務。務。
  • 54. 什麼是什麼是 Web ServicesWeb Services • 提供服務的元件提供服務的元件 • 以以 WebWeb 的開放標準為基礎的開放標準為基礎
  • 57. PHPPHP 如何呼叫如何呼叫 Web ServicesWeb Services $content='';$content=''; $search_wsdl="$search_wsdl="http://search.e104.com.tw/servicehttp://search.e104.com.tw/service s/IndexService?wsdls/IndexService?wsdl";"; $searchObj= array($searchObj= array( 'indexType' =>'pda.CustprofileOn','indexType' =>'pda.CustprofileOn', 'executeFrom' => 'PHP_TEST','executeFrom' => 'PHP_TEST', 'page' => '1', 'pageSize' => '10','page' => '1', 'pageSize' => '10', 'mainCondition' => '*‘'mainCondition' => '*‘ );); Search Web Services
  • 58. PHPPHP 如何呼叫如何呼叫 Web ServicesWeb Services $c = new SoapClient($search_wsdl);$c = new SoapClient($search_wsdl); try {try { $r = $c->search(array('config'=>$searchObj));$r = $c->search(array('config'=>$searchObj)); $content = $r->out;$content = $r->out; } catch (SoapFault $exception) {} catch (SoapFault $exception) { $content='$content=' 使用失敗使用失敗 ';'; }}
  • 59. PHPPHP 如何呼叫如何呼叫 Web ServicesWeb Services $doc = new DOMDocument();$doc = new DOMDocument(); $doc->$doc->loadXMLloadXML($content);($content); $items = $doc->getElementsByTagName("ITEM");$items = $doc->getElementsByTagName("ITEM"); foreach ($items as $item){foreach ($items as $item){ $titles = $item->getElementsByTagName("NAME");$titles = $item->getElementsByTagName("NAME"); $title = $titles->item(0)->nodeValue;$title = $titles->item(0)->nodeValue; echo $title."<br>";echo $title."<br>"; }} Result
  • 62. Q&A