在pathinfo()已知为UTF-8的文件名上使用PHP 函数时,除非特殊字符前面有"普通"字符,否则它不会返回正确的值.
示例:
pathinfo('aä.pdf')退货:
Array
(
[dirname] => [the dir]
[basename] => aä.pdf
[extension] => pdf
[filename] => aä
)
Run Code Online (Sandbox Code Playgroud)
这是好的和花花公子,但pathinfo('äa.pdf')返回:
Array
(
[dirname] => [the dir]
[basename] => a.pdf
[extension] => pdf
[filename] => a
)
Run Code Online (Sandbox Code Playgroud)
这不是我所期待的.更糟糕的是,pathinfo('ä.pdf')回报:
Array
(
[dirname] => [the dir]
[basename] => .pdf
[extension] => pdf
[filename] =>
)
Run Code Online (Sandbox Code Playgroud)
为什么这样做?这适用于我测试的所有重音字符.
我有一个测试类,其中一个测试通过a @dataProvider和另一个测试@depends在第一个方法上运行多次.然而,当我呼吁var_dump应该传递给第二次测试时,它给了我一个坚实的NULL,我没想到.
换句话说:这应该做什么:
<?php
class DevicesTest extends PHPUnit_Framework_TestCase
{
/**
* @dataProvider registerDataProvider
*/
public function testRegister($device, $supposedResult)
{
//do a bunch of tests
return array($device, $supposedResult);
}
public function registerDataProvider()
{
return array(array("foo", "foo"));
}
/**
* @depends testRegister
*/
public function testSaveDevicePreferences($deviceArr)
{
$this->assertNotEmpty($deviceArr);
}
}
?>
Run Code Online (Sandbox Code Playgroud) 我尝试在OS X Lion(sudo pecl install apc)上安装带有pecl的APC,它抱怨缺少pcre.h文件:
In file included from /private/tmp/pear/temp/APC/apc.c:44:
/usr/include/php/ext/pcre/php_pcre.h:29:10: fatal error: 'pcre.h' file not found
#include "pcre.h"
Run Code Online (Sandbox Code Playgroud)
所以我使用MacPorts来安装pcre包(sudo port install pcre),但它仍然抱怨.我怎样才能解决这个问题?
我试图根据这个答案做一些像PHP中的按位枚举.但是,当我将所有常量定义为常规ints时,它工作得很好:
final class CountryEnum {
const CZ = 1; //Czech Republic
const DE = 2; //Germany
const DK = 4; //Denmark
//12 more
const US = 32768; //USA
}
Run Code Online (Sandbox Code Playgroud)
当我尝试通过位移模式定义值时,它不起作用,即:
final class CountryEnum {
const CZ = 1; //Czech Republic
const DE = 1 << 1; //Germany
const DK = 1 << 2; //Denmark
//12 more
const US = 1 << 15; //USA
}
Run Code Online (Sandbox Code Playgroud)
当我尝试运行这个时,PHP会说一个合适的说法
解析错误:解析错误,期望
','' or在CountryEnum.php中的';''行[带有const DE的行]
所以我可能错过了一些基本的基本内容,但我很茫然.