本文目錄一覽:
- 1、PHP有哪幾種設計模式?
- 2、最有「錢途」的15種編程語言?
- 3、PHP是什麼
- 4、PHP實現定時任務的幾種方式
- 5、php 是什麼
- 6、php有哪些常用的後綴
PHP有哪幾種設計模式?
PHP 一般有五種常見的設計模式
工廠模式
工廠模式 是一種類,它具有為您創建對象的某些方法。您可以使用工廠類創建對象,而不直接使用 new。這樣,如果您想要更改所創建的對象類型,只需更改該工廠即可。使用該工廠的所有代碼會自動更改。
例如:
?php
interface IUser
{
function getName();
}
class User implements IUser
{
public function __construct( $id ) { }
public function getName()
{
return “Jack”;
}
}
class UserFactory
{
public static function Create( $id )
{
return new User( $id );
}
}
$uo = UserFactory::Create( 1 );
echo( $uo-getName().”\n” );
?
單元素模式
某些應用程序資源是獨佔的,因為有且只有一個此類型的資源。例如,通過資料庫句柄到資料庫的連接是獨佔的。您希望在應用程序中共享資料庫句柄,因為在保持連接打開或關閉時,它是一種開銷,在獲取單個頁面的過程中更是如此。
單元素模式可以滿足此要求。如果應用程序每次包含且僅包含一個對象,那麼這個對象就是一個單元素(Singleton)。
例如:
?php
require_once(“DB.php”);
class DatabaseConnection
{
public static function get()
{
static $db = null;
if ( $db == null )
$db = new DatabaseConnection();
return $db;
}
private $_handle = null;
private function __construct()
{
$dsn = ‘mysql://root:password@localhost/photos’;
$this-_handle = DB::Connect( $dsn, array() );
}
public function handle()
{
return $this-_handle;
}
}
print( “Handle = “.DatabaseConnection::get()-handle().”\n” );
print( “Handle = “.DatabaseConnection::get()-handle().”\n” );
?
觀察者模式
觀察者模式為您提供了避免組件之間緊密耦合的另一種方法。該模式非常簡單:一個對象通過添加一個方法(該方法允許另一個對象,即觀察者 註冊自己)使本身變得可觀察。當可觀察的對象更改時,它會將消息發送到已註冊的觀察者。這些觀察者使用該信息執行的操作與可觀察的對象無關。結果是對象可以相互對話,而不必了解原因。
例如:
?php
interface IObserver
{
function onChanged( $sender, $args );
}
interface IObservable
{
function addObserver( $observer );
}
class UserList implements IObservable
{
private $_observers = array();
public function addCustomer( $name )
{
foreach( $this-_observers as $obs )
$obs-onChanged( $this, $name );
}
public function addObserver( $observer )
{
$this-_observers []= $observer;
}
}
class UserListLogger implements IObserver
{
public function onChanged( $sender, $args )
{
echo( “‘$args’ added to user list\n” );
}
}
$ul = new UserList();
$ul-addObserver( new UserListLogger() );
$ul-addCustomer( “Jack” );
?
命令鏈模式
命令鏈 模式以鬆散耦合主題為基礎,發送消息、命令和請求,或通過一組處理程序發送任意內容。每個處理程序都會自行判斷自己能否處理請求。如果可以,該請求被處理,進程停止。您可以為系統添加或移除處理程序,而不影響其他處理程序。
例如:
?php
interface ICommand
{
function onCommand( $name, $args );
}
class CommandChain
{
private $_commands = array();
public function addCommand( $cmd )
{
$this-_commands []= $cmd;
}
public function runCommand( $name, $args )
{
foreach( $this-_commands as $cmd )
{
if ( $cmd-onCommand( $name, $args ) )
return;
}
}
}
class UserCommand implements ICommand
{
public function onCommand( $name, $args )
{
if ( $name != ‘addUser’ ) return false;
echo( “UserCommand handling ‘addUser’\n” );
return true;
}
}
class MailCommand implements ICommand
{
public function onCommand( $name, $args )
{
if ( $name != ‘mail’ ) return false;
echo( “MailCommand handling ‘mail’\n” );
return true;
}
}
$cc = new CommandChain();
$cc-addCommand( new UserCommand() );
$cc-addCommand( new MailCommand() );
$cc-runCommand( ‘addUser’, null );
$cc-runCommand( ‘mail’, null );
?
策略模式
我們講述的最後一個設計模式是策略 模式。在此模式中,演算法是從複雜類提取的,因而可以方便地替換。例如,如果要更改搜索引擎中排列頁的方法,則策略模式是一個不錯的選擇。思考一下搜索引擎的幾個部分 —— 一部分遍歷頁面,一部分對每頁排列,另一部分基於排列的結果排序。在複雜的示例中,這些部分都在同一個類中。通過使用策略模式,您可將排列部分放入另一個類中,以便更改頁排列的方式,而不影響搜索引擎的其餘代碼。
例如:
?php
interface IStrategy
{
function filter( $record );
}
class FindAfterStrategy implements IStrategy
{
private $_name;
public function __construct( $name )
{
$this-_name = $name;
}
public function filter( $record )
{
return strcmp( $this-_name, $record ) = 0;
}
}
class RandomStrategy implements IStrategy
{
public function filter( $record )
{
return rand( 0, 1 ) = 0.5;
}
}
class UserList
{
private $_list = array();
public function __construct( $names )
{
if ( $names != null )
{
foreach( $names as $name )
{
$this-_list []= $name;
}
}
}
public function add( $name )
{
$this-_list []= $name;
}
public function find( $filter )
{
$recs = array();
foreach( $this-_list as $user )
{
if ( $filter-filter( $user ) )
$recs []= $user;
}
return $recs;
}
}
$ul = new UserList( array( “Andy”, “Jack”, “Lori”, “Megan” ) );
$f1 = $ul-find( new FindAfterStrategy( “J” ) );
print_r( $f1 );
$f2 = $ul-find( new RandomStrategy() );
print_r( $f2 );
?
最有「錢途」的15種編程語言?
如果你是一個程序員,那麼你的美好時光來了。根據美國勞動統計局的預測,計算機方面的工作崗位將在接下來的七年時間裡增長8%。如果你很擅長於寫代碼,那麼你的薪資可以高達300美元一小時甚至更多。
想要拿到這一領域的高薪,那麼你就得掌握最需要的幾門編程語言。下面是你需要知道的15種編程語言:
最有「錢途」的15種編程語言
1.Java
Java用於構建企業web應用的後端,是當今最為流行的編程語言之一。Web開發人員可以憑藉Java和基於Java的框架為各種用戶建立可擴展的Web應用程序。Java也是為智能手機和平板電腦開發原生Android應用程序的主要語言。
2.JavaScript
現在的每一個網站都使用了JavaScript。如果你想在你的網站上創建互動環節,或者用一些流行的JavaScript框架建立用戶界面,那麼JavaScript就是首選。
3.C#
C#是開發微軟平台和服務的主要語言。無論你是使用Azure和.NET構建現代化的web應用,還是為Windows設備構建app,亦或是為企業創建功能強大的桌面應用,C#都是駕馭微軟的最快方式。想開發遊戲?流行的統一遊戲開發引擎也使用了C#作為其主要的編程語言之一。
4.PHP
需要構建操作數據的Web應用?那麼,PHP以及MySQL之類的資料庫,是我們必不可少的工具。PHP活躍於大多數數據驅動的網站,並且是作為內容管理系統的基礎性技術,內容管理系統包括Wordpress,它能擴展你的網站功能,使之更為強大。
5.C++
如果你需要直接連接到硬體以獲得最大的處理能力,那麼C++就是最佳選擇。它可以用於開發功能強大的桌面軟體、硬體加速的遊戲和內存密集型的app。
6.Python
Web應用、用戶界面、數據分析、數據統計——無論是什麼問題,Python都有框架可以解決。最近,Python已經被數據科學家當作是篩選大型數據集的一個關鍵工具。
7.C
為什麼C語言至今依然這麼受歡迎?原因在於體積。C語言不但小巧、速度快,而且功能非常強大。
8.SQL
SQL能讓我們用一種快速、可重複和可靠的方式找到確切的信息。使用SQL,你就可以輕鬆地從大型、複雜的資料庫中查詢和提取有意義的數據。
9.Ruby
想要快速創建自己的項目嗎?想要創建下一個大型web應用的思路原型嗎?那麼用Ruby(和RubyonRails)吧。Ruby語言非常簡單易學,其功能又令人難以置信的強大。
10.Objective-C
如果你有興趣做一個適用於iOS的應用程序,那麼你需要知道Objective-C。雖然去年的炒作主要集中在蘋果的新的語言Swift上,但是Objective-C依然是構建蘋果生態系統app的基礎語言。
11.Perl
雖然Perl深奧又有點凌亂,但是我們不能否認的是它是一門功能超級強大的編程語言,也是任何人網路安全武器庫的重要組成部分。Perl被認為是任何IT專業人士的關鍵工具。
12..NET
雖然其本身並不是語言,不過.NET是一個用於雲服務和應用開發的微軟平台。得利於微軟近期的開源力度,.NET也成為了谷歌和蘋果的平台。這樣一來,你就可以使用.NET和多種編程語言輕鬆構建支持多個平台的app了。
13.VisualBasic
VisualBasic是.NET平台的一種關鍵語言,它既允許你構建app來支持你的業務,也可以自動化功能強大的Office應用,如Excel,還能簡化最常見的任務。
14.R
R促進了大數據的革命,也是2015年凡是需要做認真數據分析的小夥伴都必須知道的編程語言。從科學和商業再到娛樂和社交媒體,R對幾乎所有需要進行統計分析的領域都是好助手。
15.Swift
誕生至今甚至還不足一年,Swift作為一種方法和手段,一種可以快速便捷地開發蘋果的Mac和iOS操作系統的方法和手段,迅速抓住了來自世界各地的眼球,大量的開發人員趨之若鶩。java課程發現Swift憑藉它種類繁多的功能和友好的語法,使得任何人只需要一台Mac,就可以為iOS和MacOSX打造下一個殺手級應用.
PHP是什麼
PHP(PHP:Hypertext Preprocessor遞歸縮寫)中文名字是:「超文本預處理器」,是一種廣泛使用的通用開源腳本語言,適合於Web網站開發,它可以嵌入HTML中。編程范型是面向對象、命令式編程的,截止2019年4月24日為止,最新的版本是PHP 5.6.0(28 Aug 2014),其操作的系統為windows/linux/Mac跨平台。
擴展資料:
PHP的功能
1、創建博客
使用PHP創建博客wordpres,可以輕鬆創建博客。即使您不具備PHP知識,也可以使用它,但如果您可以編寫PHP,則可以自定義您的博客並創建主題。
2、網站開發
60%全球互聯網網站採用php技術,80%國內互聯網網站使用php開發。這些網站包含購物網站,政府企業網站,QQ空間,論壇博客等等。
3、移動端微網站開發以及小程序
移動設備的普及為移動互聯網的快速發展奠定了基礎!手機淘寶網站,手機京東網站等等, 微信公眾號應用中的微網站。
參考資料來源:百度百科——PHP
PHP實現定時任務的幾種方式
一. 簡單
?php
ignore_user_abort();//關掉瀏覽器,PHP腳本也可以繼續執行.
set_time_limit(0);// 通過set_time_limit(0)可以讓程序無限制的執行下去
ini_set(‘memory_limit’,’512M’); // 設置內存限制
$interval=60*30;// 每隔半小時運行
do{
//ToDo
sleep($interval);// 等待5分鐘
}
while(true);
二. 簡單 可控型
config.php
?php
return 1;
?
cron.php
ignore_user_abort();//關掉瀏覽器,PHP腳本也可以繼續執行.
set_time_limit(0);// 通過set_time_limit(0)可以讓程序無限制的執行下去
$interval=60*30;// 每隔半小時運行
do{
$run = include ‘config.php’;
if(!$run) die(‘process abort’);
//ToDo
sleep($interval);// 等待5分鐘
}
while(true);
三. 簡單 改進型
?php
$time=15;
$url=”http://”.$_SERVER[‘HTTP_HOST’].$_SERVER[‘REQUEST_URI’];
/*
function
*/
sleep($time);
file_get_contents($url);
?
php 是什麼
php 是一種伺服器端的,嵌入html的腳本語言。php區別其他像客戶端java的地方是它的代碼在伺服器端執行.php能做什麼?
最低水平,php可以做任何其他cgi程序所能做的事,例如收集表格數據,生成動態頁面內容,或者收發cookies.可能最強大,最有意義的特性是php支持大範圍的資料庫.書寫一個支持資料庫的web 頁面是難以置信的簡單.
下面是當前支持的資料庫:
adabas d interbase solid
dbase msql sybase
empress mysql velocis
filepro oracle unix dbm
informix postgresql
php通過協議也支持與其他服務的”交談”,像imap, snmp, nntp, pop3, 甚至是 http. 你也可以打開晦澀的 網路介面和其他協議交互.
php的簡要歷史
1994年秋季, rasmus lerdorf 開始構思 php. 早期的非發行版本被用在他的主頁上,以追蹤誰在看他的在線簡歷. 1995年年初第一版本出台,當時php只被認為是個人主頁開發工具.它由一個非常單純的只能理解很少數特殊宏的分析引擎和 一些用在主頁後端通用的工具組成.如留言簿,計數器和其他一些東西.這個分析器在1995年年中被重寫並被命名為 php/fi 第二版. fi來自 rasmus 寫的另外一個包, 用於解釋 html 形式的數據.他結合了個人主頁工具腳本和形式解析器,並加 上msql支持.這樣就產生 php/fi 了. php/fi以令人驚奇的步調成長,人們開始把自己的代碼貢獻給它.
很難給出它的硬統計表,但可以估計在1996年末,整個世界至少有15,000個網站在用php/fi.到1997年年中,這個 數字已經超過50,000了. 而在此時php的發展也發生了變化.由rasmus自己偏愛的和幾個人開發的項目變成一個更有組織的團 體成就.ev suraski和andi gutmans重寫了解析器.這個新的解析器成為php版本3的基礎.許多有用的代碼從php/fi 繼承到php3,並且很多是完全重寫的.
今天(1999年年中)不管是php/fi或php3與很多商業產品捆綁在一塊,例如c2級強度的web伺服器和紅帽子linux. 根據netcraft提供的數據推斷,保守估計全世界應用php的網站已超過150,000個.由此看來,它比在網際網路上運行netscape 的旗艦企業伺服器的站點還多.
php有哪些常用的後綴
php3,pht,phtml,phps等後綴如果伺服器是apach的話配置文件是可以添加這些php別名進行解析的
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/186412.html