phpuseas
Ⅰ php5.2使用use as的問題
5.3以上才支持命名空間,5.2當然會報錯了。
別再用5.2了,還是該與時俱進了,盡快的用php7吧。
Ⅱ PHP將整數數字轉換為羅馬數字實例分享
方法一:自定義函數
我們可以自己手動編寫一個函數來實現此功能,這個函數可以將數字作為第一個參數,將其轉換為羅馬並返回。
註:大多數演算法只能在1-4999的范圍內工作,如果使用特大數,腳本將失敗。
實現代碼:
<?php
header("content-type:text/html;charset=utf-8");
//將數字轉換為羅馬表示形式
function
numberToRoman($num)
{
//
Be
sure
to
convert
the
given
parameter
into
an
integer
$n
=
intval($num);
$result
=
'';
//
Declare
a
lookup
array
that
we
will
use
to
traverse
the
number:
$lookup
=
array(
'M'
=>
1000,
'CM'
=>
900,
'D'
=>
500,
'CD'
=>
400,
'C'
=>
100,
'XC'
=>
90,
'L'
=>
50,
'XL'
=>
40,
'X'
=>
10,
'IX'
=>
9,
'V'
=>
5,
'IV'
=>
4,
'I'
=>
1
);
foreach
($lookup
as
$roman
=>
$value)
{
//
Look
for
number
of
matches
$matches
=
intval($n
/
$value);
//
Concatenate
characters
$result
.=
str_repeat($roman,
$matches);
//
Substract
that
from
the
number
$n
=
$n
%
$value;
}
return
$result;
}
echo
'整數數字轉換為羅馬數字:<br><br>';
//
VIII
echo
'數字8:'.numberToRoman(8).'<br>';
//
CXXIII
echo
'數字123:'.numberToRoman(123).'<br>';
//
MMCCCLV
echo
'數字2355:'.numberToRoman(2355).'<br>';
//
MMMMCMXCIX
echo
'數字4999:'.numberToRoman(4999).'<br>';
?>
輸出:
方法二:使用Romans庫
Romans庫是一個非常簡單的PHP羅馬數字型檔,允許您將整數轉換為其羅馬表示,反之亦然。
註:如果沒有該庫,請先需要安裝;安裝好Romans庫後,就能夠使用其命名空間並使用可幫助轉換數字的函數。
Romans庫包含一對簡單的過濾器,用於將具有羅馬數字的字元串轉換為表示輸入為十進制的int,將十進制int轉換為具有羅馬數字作為結果的字元串。
1、整數轉換為羅馬數字
要將整數轉換為羅馬表示,需要使用IntToRoman類,創建一個實例並從中調用filter方法。此方法將數字作為第一個參數,並返回帶有羅馬數字的字元串:
<?php
use
Romans\Filter\IntToRoman;
$filter
=
new
IntToRoman();
$result
=
$filter->filter(1999);
echo
$result;
?>
輸出:
MCMXCIX
2、羅馬數字轉換為整數
要將羅馬數字轉換為整數表示,需要使用RomanToInt類,創建一個實例並從中調用filter方法。此方法將使用羅馬數字的字元串作為第一個參數,並返回一個帶數值的整數:
<?php
use
Romans\Filter\RomanToInt;
$filter
=
new
RomanToInt();
$result
=
$filter->filter('MCMXCIX');
echo
$result;
?>
輸出:
1999
您可能感興趣的文章:PHP5中使用mysqli的prepare操作資料庫的介紹PHP中單例模式的使用場景與使用方法講解PHP自動生成縮略圖函數的源碼示例PHP添加文字水印或圖片水印的水印類完整源代碼與使用示例PHP實現對數字分隔加千分號的方法PHP生成指定范圍內的N個不重復的隨機數PHP中十六進制顏色與RGB顏色值互轉的方法Ubuntu16.04搭建php5.6Web伺服器環境PHP標准庫(PHP
SPL)詳解PHP後台備份MySQL資料庫的源碼實例
Ⅲ 如何在php後端及時推送消息給客戶端
使用以下代碼可以更改設置。
Ⅳ php匿名函數中的use有什麼用
php文檔中關於use的說明
所有支持命名空間的PHP版本支持三種別名或導入方式:為類名稱使用別名、為介面使用別名或為命名空間名稱使用別名。PHP5.6開始允許導入函數或常量或者為它們設置別名。
在PHP中,別名是通過操作符use來實現的.下面是一個使用所有可能的五種導入方式的例子:
Example#1使用use操作符導入/使用別名
<?php
namespacefoo;
useMyFullClassnameasAnother;
//下面的例子與useMyFullNSnameasNSname相同
useMyFullNSname;
//導入一個全局類
useArrayObject;
//importingafunction(PHP5.6+)
usefunctionMyFullfunctionName;
//aliasingafunction(PHP5.6+)
;
//importingaconstant(PHP5.6+)
useconstMyFullCONSTANT;
$obj=newnamespaceAnother;//實例化fooAnother對象
$obj=newAnother;//實例化MyFullClassname對象
NSnamesubnsfunc();//調用函數MyFullNSnamesubnsfunc
$a=newArrayObject(array(1));//實例化ArrayObject對象
//如果不使用"useArrayObject",則實例化一個fooArrayObject對象
func();//
echoCONSTANT;//
?>
Ⅳ PHP5.5 將會帶來哪些新特徵
1、放棄對Windows XP和2003 的支持
PHP5.5 將不再支持Windows XP和2003,這些系統已經有十年的歷史,所以PHP將不再提供支持。
2、棄用e修飾符
e修飾符是指示 preg_replace函數用來評估替換字元串作為PHP代碼,而不只是僅僅做一個簡單的字元串替換。不出所料,這種行為會源源不斷的出現安全問題。這就是為什麼在PHP5.5 中使用這個修飾符將拋出一個棄用警告。作為替代,你應該使用 preg_replace_callback函數。你可以從 RFC找到更多關於這個變化相應的信息。
新增函數和類
接下來,我們將看到在計劃之中的新增函數和類:
boolval()
PHP已經實現了strval、intval和floatval的函數。為了達到一致性將添加boolval函數。它完全可以作為一個布爾值計算,也可以作為一個回調函數。
hash_pbkdf2()
PBKDF2全稱「Password-Based Key Derivation Function 2」,正如它的名字一樣,是一種從密碼派生出加密密鑰的演算法。這就需要加密演算法,也可以用於對密碼哈希。更廣泛的說明和用法示例,請參閱 RFC。
intl 擴展
將有許多改進 intl的擴展。例如,將會有新的IntlCalendar,IntlGregorianCalendar,IntlTimeZone,IntlBreakIterator,IntlRuleBasedBreakIterator,IntlCodePointBreakIterator類。之前,我竟然不知道有這么多關於intl擴展,如果你想知道更多,我建議你去最新公告里找 Calendar和 BreakIterator。
array_column()
有一個 提議,新增array_column(或array_pluck)函數,它的表現如下:
<?php
$userNames = array_column($users, 'name');
// is the same as
$userNames = [];
foreach ($users as $user) {
$userNames[] = $user['name'];
}
像這樣從資料庫獲取一列,但返回是數組。
一個簡單的密碼散列API
最近的密碼泄漏(從LinkedIn等)顯示,即使是大型網站也不知道如何正確地散列密碼。幾年前人們一直提倡使用bcrypt,但大多數人似乎仍然是使用完全不安全的sha1哈希值。
我們認為這樣做的原因可能是真的很難使用crypt函數的API。因此我們會採用一個新的、簡單的API,用於安全的密碼散列:
<?php
$password = "foo";
// creating the hash
$hash = password_hash($password, PASSWORD_BCRYPT);
// verifying a password
if (password_verify($password, $hash)) {
// password correct!
} else {
// password wrong!
}
新的散列API提供了一些更多的特性,請參閱 RFC。
語言改變
現在真正有趣的東西:新的語言特性和增強功能。
常量引用
「常量引用」意味著數組可以直接操作字元串和數組字面值。舉兩個例子:
<?php
function randomHexString($length) {
$str = '';
for ($i = 0; $i < $length; ++$i) {
$str .= "0123456789abcdef"[mt_rand(0, 15)]; // direct dereference of string
}
}
function randomBool() {
return [false, true][mt_rand(0, 1)]; // direct dereference of array
}
我不認為在實踐中會使用此功能,但它使語言更加一致。請參閱 RFC。
調用empty()函數(和其他表達式)一起工作
目前,empty()語言構造只能用在變數,而不能在其他表達式。在特定的代碼像empty($this->getFriends())將會拋出一個錯誤。作為PHP5.5 這將成為有效的代碼。更多信息請參閱 RFC。
獲取完整類別名稱
PHP5.3 中引入命名空間的別名類和命名空間短版本的功能。雖然這並不適用於字元串類名稱:
<?php
use Some\Deeply\Nested\Namespace\FooBar;
// does not work, because this will try to use the global `FooBar` class
$reflection = new ReflectionClass('FooBar');
為了解決這個問題採用新的FooBar::class語法,它返回類的完整類別名稱:
<?php
use Some\Deeply\Nested\Namespace\FooBar;
// this works because FooBar::class is resolved to "Some\\Deeply\\Nested\\Namespace\\FooBar"
$reflection = new ReflectionClass(FooBar::class);
更多示例請參閱 RFC。
參數跳躍
如果你有一個函數接受多個可選的參數,目前沒有辦法只改變最後一個參數,而讓其他所有參數為默認值。
RFC上的例子,如果你有一個函數如下:
function create_query($where, $order_by, $join_type='', $execute = false, $report_errors = true) { ... }
那麼有沒有辦法設置$report_errors=false,而其他兩個為默認值。為了解決這個跳躍參數的問題而提出:
create_query("deleted=0", "name", default, default, false);
我個人不是特別喜歡這個提議。在我的眼睛裡,代碼需要這個功能,只是設計不當。函數不應該有12個可選參數。
標量類型提示
標量類型提示原本計劃進入5.4,但由於缺乏共識而沒有做。獲取更多關於為什麼標量類型提示沒有做進PHP的信息,請參閱: 標量類型提示比你認為的更難。
對於PHP5.5 而言,針對標量類型提示討論又一次出現,我認為這是一個相當不錯的 提議。
它需要通過輸入值來指定類型。例如:123,123.0,「123」都是一個有效的int參數輸入,但「hello world」就不是。這與內部函數的行為一致。
function foo(int $i) { ... }
foo(1); // $i = 1
foo(1.0); // $i = 1
foo("1"); // $i = 1
foo("1abc"); // not yet clear, maybe $i = 1 with notice
foo(1.5); // not yet clear, maybe $i = 1 with notice
foo([]); // error
foo("abc"); // error
Getter 和 Setter
如果你從不喜歡寫這些getXYZ()和setXYZ($value)方法,那麼這應該是你最受歡迎的改變。提議添加一個新的語法來定義一個屬性的設置/讀取:
<?php
class TimePeriod {
public $seconds;
public $hours {
get { return $this->seconds / 3600; }
set { $this->seconds = $value * 3600; }
}
}
$timePeriod = new TimePeriod;
$timePeriod->hours = 10;
var_mp($timePeriod->seconds); // int(36000)
var_mp($timePeriod->hours); // int(10)
當然還有更多的功能,比如只讀屬性。如果你想要知道更多,請參閱 RFC。
生成器
目前,自定義迭代器很少使用,因為它們的實現,需要大量的樣板代碼。生成器解決這個問題,並提供了一種簡單的樣板代碼來創建迭代器。
例如,你可以定義一個范圍函數作為迭代器:
<?php
function *xrange($start, $end, $step = 1) {
for ($i = $start; $i < $end; $i += $step) {
yield $i;
}
}
foreach (xrange(10, 20) as $i) {
// ...
}
上述xrange函數具有與內建函數相同的行為,但有一點區別:不是返回一個數組的所有值,而是返回一個迭代器動態生成的值。
獲取更深入的介紹請參閱 RFC。
列表解析和生成器表達式
列表解析提供一個簡單的方法對數組進行小規模操作:
$firstNames = [foreach ($users as $user) yield $user->firstName];
上述列表解析相等於下面的代碼:
$firstNames = [];
foreach ($users as $user) {
$firstNames[] = $user->firstName;
}
也可以這樣過濾數組:
$underageUsers = [foreach ($users as $user) if ($user->age < 18) yield $user];
生成器表達式也很類似,但是返回一個迭代器(用於動態生成值)而不是一個數組。
Ⅵ 如何使用composer搭建自己的php框架
安裝 illuminate/database
給 composer.json 增加一個 require 項:
"illuminate/database": "*"
運行 composer update ,等待安裝完成。
使用 Eloquent
修改 public/index.php 為:
<?php
use Illuminate\Database\Capsule\Manager as Capsule;
// Autoload 自動載入
require '../vendor/autoload.php';
// Eloquent ORM
$capsule = new Capsule;
$capsule->addConnection(require '../config/database.php');
$capsule->bootEloquent();
// 路由配置
require '../config/routes.php';
新增 config/database.php (注意替換資料庫密碼):
<?php
return [
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'mffc',
'username' => 'root',
'password' => 'password',
'charset' => 'utf8',
這樣就可以了,試試吧 !你還不明白的話可以去後盾人線下面授培訓去問問專家教師,他們一定會的,這樣不就行了,如果嫌棄麻煩可以上後盾人平台,找找相關教材視頻看看,不就會了,希望能幫到你,給個採納吧謝謝ヽ(愛´∀『愛)ノ
Ⅶ Linux下安裝軟體時出現這個問題:'configure.ac' or 'configure.in' is requred,時怎麼回事,怎麼解決
安裝目錄下缺少這個文件 從樣子看是個配置文件 所以不能安裝 你檢查下這個文件是否存在 如果存在檢查下許可權是否設置正確
Ⅷ Thinkphp5.1 workerman Cannot use Workerman\Worker as Worker because the name is already
這個命名空間已經存在了,你需要重新定義一個新的命名空間。
Ⅸ php use php namespace 到底是怎麼一回事
1. namespace Zend\Http\PhpEnvironment;
這句代碼定義了一個命名空間,你可以理解為定義一個名稱為 Zend\Http\PhpEnvironment 的域名。
在定義了之後,下面所申明的class, interface, const等都是在申明的這個「域」裡面的。當引用一個申明了命名空間的包含文件,想要調用這個裡面的東西,那就必須:
調整當前腳本也到這個域名里,否則,就得用namesapce的全稱。
比如,inc.php 文件:
namespace Zend\Http\PhpEnvironment;
class Bar {}//定義了一個類
則其他文件調用時:
// 訪問Foo的第一種方法,用全稱
require 'inc.php';
$foo = new \Zend\Http\PhpEnvironment\Bar();
// 訪問Foo的第二種方法
namespace Foo; // 調整當前腳本到Foo這個ns域,而且namespace申明必須在第一句
require 'inc.php';
$foo = new Bar();
2. use關鍵字目的是使用ns的別名:
比如說,上面的
// 訪問Foo的第一種方法,用全稱
require 'inc.php';
$foo = new \Zend\Http\PhpEnvironment\Bar();
用uses後,寫法如下:
use \Zend\Http\PhpEnvironment as pe; //定義別名
$foo = new \pe\Bar(); //用短的別名來代替原來的
如果省略後面的as ....,那麼,就可以直接用最後一節的文字來代替,比如,上面的:
use \Zend\Http\PhpEnvironment; //定義別名
$foo = new \PhpEnvironment\Bar(); //用短的別名來代替原來的
================================================
php官方手冊中的相關內容:
在PHP中,namespace命名空間用來解決在編寫類庫或應用程序時創建可重用的代碼如類或函數時碰到的兩類問題:
1. 用戶編寫的代碼與PHP內部的類/函數/常量或第三方類/函數/常量之間的名字沖突。
2. 為很長的標識符名稱(通常是為了緩解第一類問題而定義的)創建一個別名(或簡短)的名稱,提高源代碼的可讀性。
PHP 命名空間提供了一種將相關的類、函數和常量組合到一起的途徑。
PHP 命名空間支持有兩種使用別名或導入方式:為類名稱使用別名,或為命名空間名稱使用別名, 別名通過操作符 use 來實現。
Ⅹ PHP 的use 命名空間 是什麼意思
有點類似於 java 中的包機制,用來解決重名問題的,每一個命名空間都是獨立的
給你舉個例子吧,比如我現在想寫兩個類,名字都叫 Action
<?php
namespaceA;//定義命名空間
classAction{
//..
}
namespaceB;//定義第二個命名空間
classAction{
//..
}
use 關鍵字用於導入某個命名空間下的類, 如果我在B空間內想使用A空間中的Action類,就需要導入這個類才能使用(當然也可以指明空間前綴來使用)
namespaceB;
//在本空間中需要使用A空間中的Action類,使用use導入
useAAction;//導入,如果本空間中也有一個Action會出現錯誤,因為類重名了
useAActionasA_Action;//通過取別名的方式解決
$var=newA_Action;