Tag: PHP的

sortingalgorithm:Magento结帐总计错误sorting导致错误的运输税计算

在Magento中有一个function,你可以定义总计算的顺序,通过指定之前和之后总计应该运行总计。 我添加了一个自定义的总数,如果我将以下行添加到config.xml,sorting是错误的。 错误的意思是: tax_shipping 之前有 tax_shipping 。 这导致运输成本的税收被添加两次。 但这违反了条件 tax_shipping after: shipping 我的猜测是: 在整套规则中必然存在一些矛盾。 但是我怎么能find它? 这是我添加的唯一规则。 如果没有这个规则, tax_shipping会在shipping后sorting。 <shippingprotectiontax> <class>n98_shippingprotection/quote_address_total_shippingprotectionTax</class> <after>subtotal,discount,shipping,tax</after> <before>grand_total</before> </shippingprotectiontax> 下面我粘贴由Mage_Sales_Model_Quote_Address_Total_Collector::_getSortedCollectorCodes()的usort调用返回的sorting数组对于那些没有Magento安装,代码是这样的: /** * uasort callback function * * @param array $a * @param array $b * @return int */ protected function _compareTotals($a, $b) { $aCode = $a['_code']; $bCode = $b['_code']; if (in_array($aCode, […]

unset和= null之间的区别

从一个随机的php.net文章 : 如果你正在做$ whatever = null; 那么你正在重写variables的数据。 您可能会更快地释放内存/收缩内存,但它可能会更快地从真正需要它们的代码中窃取CPU周期,从而导致更长的总体执行时间。 显然这是无可争辩的事实,所以也许有人会这样解释。 我的意思是,不会奇迹般地执行任何汇编指令,而$whatever = null; 呢? 正如所给出的答案,与其说是一样有用 $ whatever = null重置缓冲区和L1caching,而未设置则清除缓冲区并重置L2caching。 技术人员并不构成答案。

在PHP中使用cURL发布文件string?

我想知道是否有可能发布一个文件 – 连同其他表单数据 – 当文件只是一个string? 我知道你可以通过在文件path前加“@”来发布已经在文件系统上的文件。 不过,我想绕过创build一个临时文件,只发送文件作为string,但我不确定如何使用PHP中的cURL构造请求。 干杯 $postFields = array( 'otherFields' => 'Yes' ,'filename' => 'my_file.csv' ,'data' => 'comma seperated content' ); $options = array( CURLOPT_RETURNTRANSFER => true ,CURLOPT_SSL_VERIFYPEER => false ,CURLOPT_SSL_VERIFYHOST => 1 ,CURLOPT_POSTFIELDS => $postFields ,CURLOPT_HTTPHEADER => array( 'Content-type: multipart/form-data' ) );

为什么phpstring连接运算符是一个点(。)?

在PHP中, string运算符点(。)用于连接string。 例如: $msg = "Hello there, " . $yourName; 点运算符在第一次看到它的时候似乎总是让人们(包括我自己)迷惑,特别是当你使用它连接2个string时,操作不会抛出错误,只是“默默地”失败。 在不使用此操作符的PHP和其他语言(如JavaScript,Python等)之间切换时也是一个常见的错误。 我的问题是,为什么该语言使用点(。)运算符而不是一个更广泛接受的运算符,如加号(+)? 有没有什么历史原因可以指出为什么这个运营商被选中? 只是因为点可以将其他variablestypes转换为string? 例如: echo 1 . 2; //prints the string "12" 谢谢!

PHPUnit达到100%的代码覆盖率

我一直在为一个项目创build一个testing套件,虽然我意识到获得100%的覆盖率并不是应该努力的指标,但是代码覆盖率报告中有一些奇怪的地方,我希望它澄清。 看截图: 因为被testing的方法的最后一行是return ,所以最后一行(它只是一个右括号)显示为从未执行,因此整个方法在总览中被标记为未执行。 (要么,要么我没有正确阅读报告。) 完整的方法: static public function &getDomain($domain = null) { $domain = $domain ?: self::domain(); if (! array_key_exists($domain, self::$domains)) { self::$domains[$domain] = new Config(); } return self::$domains[$domain]; } 有没有这个原因,或者是一个小故障? (是的,我阅读了如何获得PHPUnit的100%代码覆盖率 ,不同的情况虽然相似。) 编辑: 通过报告,我注意到在代码中其他地方的switch语句也是如此。 所以这个行为至less在一定程度上是一致的,但是对于我来说却是莫名其妙的。 EDIT2: 我在OS X上运行:PHPUnit 3.6.7,PHP 5.4.0RC5,XDebug 2.2.0-dev

为什么array_diff()给数组string转换错误?

我得到数组到string转换错误为以下行: $diff = array_diff($stockist, $arr); 这里, $arr是一个从JSON文件解码的数组。 使用is_array()函数我能够validation这两个参数是数组。 有人可以指出我的问题 $stockist = array(); while (!feof($file_handle)) { $line_of_text = fgetcsv($file_handle); $query = "SELECT * FROM reorderchart WHERE medicine = '" . trim($line_of_text[3]) . "' ORDER BY medicine"; $result = mysql_query($query); if (trim($line_of_text[2]) – trim($line_of_text[1]) <= 0) { while ($row = mysql_fetch_array($result)) { $file = "results.json"; $arr = […]

什么时候在PHP中使用静态修饰符

最近做了一些代码评论,我遇到了一些有很多静态方法的类,我似乎无法理解为什么? 因此我的问题是: 有什么关于在PHP中使用静态方法的最佳实践? 什么时候想要使用它们,什么时候不应该使用它们? 运行时如何处理静态方法有什么特别的区别? 它们是否影响性能或内存占用?

如何在C#中生成HMAC-SHA1?

我正在尝试使用C#使用REST API。 API创build者已经提供了PHP,Ruby和Java的示例库。 我正在挂上它的一部分,我需要生成一个HMAC 。 以下是他们提供的示例库中的工作方式。 PHP hash_hmac('sha1', $signatureString, $secretKey, false); ruby digest = OpenSSL::Digest::Digest.new('sha1') return OpenSSL::HMAC.hexdigest(digest, secretKey, signatureString) Java的 SecretKeySpec signingKey = new SecretKeySpec(secretKey.getBytes(), HMAC_SHA1_ALGORITHM); Mac mac = null; mac = Mac.getInstance(HMAC_SHA1_ALGORITHM); mac.init(signingKey); byte[] bytes = mac.doFinal(signatureString.getBytes()); String form = ""; for (int i = 0; i < bytes.length; i++) { String str = […]

如何select一个MySQL数据库与PHP中的PDO一起使用?

我想在PHP PDO对象创build完成后select一个MySQL数据库。 我该怎么做呢? // create PDO object and connect to MySQL $dbh = new PDO( 'mysql:host=localhost;', 'name', 'pass' ); // create a database named 'database_name' // select the database we just created ( this does not work ) $dbh->select_db( 'database_name' ); 有没有相当于mysqli :: select_db的PDO? 也许我试图不正确地使用PDO? 请帮忙或解释。 编辑 我不应该使用PDO来创build新的数据库吗? 我明白,使用PDO的大部分好处都会在一个很less使用的操作中丢失,这个操作不会像CREATE DATABASE那样插入数据,但是使用不同的连接来创build数据库似乎很奇怪,然后创build一个PDO连接来使其他调用。

PHP中的decodeURIcomponent相当于什么?

我有一个string与我通过HTTP传输的Unicode字符。 这个string是用Javascript的encodeURIcomponent()编码的。 有没有在Javascript的decodeURIComponent() PHP等效函数?