我目前正在尝试删除我的项目中的所有错误和警告,我的PHPStorm中的检查工具给了我.
我遇到一个片段PHPStorm说"未使用的私有方法_xxx"虽然它实际上使用,但以动态的方式.这是一个简化的代码段:
<?php
class A
{
private function _iAmUsed()
{
//Do Stuff...
}
public function run($whoAreYou)
{
$methodName = '_iAm' . $whoAreYou;
if (method_exists($this, $methodName)) {
$this->$methodName();
}
}
}
$a = new A();
$a->run('Used');
?>
Run Code Online (Sandbox Code Playgroud)
在这个片段中,PHPStorm将告诉我"未使用的私有方法_iAmUsed",而事实上,它被使用...我怎么能通过添加PHPDocs或其他东西,让我的IDE理解我的方法实际上是用的?
请注意,我给我的"运行"调用,一个静态字符串,但我们可以想象这个:
<?php
$a->run($_POST['whoYouAre']); //$_POST['whoYouAre'] == 'Used'
?>
Run Code Online (Sandbox Code Playgroud)
非常感谢!
我正在使用几个内存表来缓存我网站的数据.这是我的mac上的本地web主机和linux上的dev服务器,使用php 5.5上的mssql php库
简化表格如下:
CacheID INT NOT NULL
CacheData VARCHAR(MAX)
Run Code Online (Sandbox Code Playgroud)
我偶尔会插入几个大值.10,000多个字符.插件工作正常.一个简单的查询告诉我所有数据都在字段中:
SELECT
CacheID,
LEN(CacheData)
FROM Caches
Run Code Online (Sandbox Code Playgroud)
但是,当我实际选择数据时,该cache列总是被截断为8192个字符,从而导致出现问题.简单选择:
SELECT
CacheData
FROM Caches
WHERE CacheID = 10
Run Code Online (Sandbox Code Playgroud)
我检查了varchar(max)字符限制.它远远超过8192.2^32 - 1
为什么数据被截断?
另一种形式的问题.我实际上遇到了这个agian而忘记了这个解决方案.当我忘记根本原因时,请记住我.这是我搜索认为SQL Server是罪魁祸首.
什么是SQL Servers Varchar(MAX)最大长度? - 如果你的值被截断它可能是由php非sql server引起的.如果您只想知道最大值是什么,这里回答的问题是:varchar(max)变量的最大大小
我从一个我经常用于自定义项目的开源CMS借用一个函数.
它的目的对于这个问题并不重要,但如果你想知道它是一个简单的静态缓存,旨在减少数据库查询.我可以在一个页面加载中调用getObject 10次,而不必担心10次访问数据库.
该函数的简化版本如下所示:
function &staticStorage($name, $default_value = NULL)
{
static $data = array();
if (isset($data[$name])
{
return $data[$name];
}
$data[$name] = $default_value;
return $data[$name];
}
Run Code Online (Sandbox Code Playgroud)
这个函数将被调用如下:
function getObject($object_id)
{
$object = &staticStorage('object_' . $object_id);
if ($object)
{
return $object;
}
// This query isn't accurate but that's ok it's not important to the question.
$object = databaseQuery('SELECT * FROM Objects WHERE id = @object_id',
array('@object_id => $object_id'));
return $object;
}
Run Code Online (Sandbox Code Playgroud)
我的想法是,一旦我调用static_storage返回值将更新静态存储.
我感兴趣的是$object = …
我有Web界面(在大型Web应用程序中),允许用户在两个非常大的列表之间建立连接.
列表A - 40,000多个项目
列表B - 1,000+项目
列表C - 包含b中连接到列表A中所选项目的项目列表
这是当前行为减去数据库的ajax更新的粗略方面.
这是主要功能(仅在此处,因为堆栈溢出需要jsfiddle链接的代码片段).
$('.name-listb input').add('.name-listc input').click(function (e) {
var lista_id = $('.name-lista input:checked').val();
var listb_id = $(this).val();
var operation = $(this).prop('checked') ? 'create' : 'delete';
var $listb = $('.name-listb .checkbox-list');
var $listc = $('.name-listc .checkbox-list');
if (operation == 'create') {
$listb.find('input[value=' + listb_id + ']').prop('checked', true);
// Ajax request to add checked item.
$new_item = $listb.find('input[value=' + listb_id + ']').parents('.option-group').clone();
$listc.append($new_item);
} else if (operation == 'delete') …Run Code Online (Sandbox Code Playgroud) 我在网站上输出了一个国际电话号码.例如:
<span class="phone-number">+1 918 555 5555</span>
Run Code Online (Sandbox Code Playgroud)
我的iPhone很聪明,可以将其识别为电话号码并拨打电话,但它会从号码中删除"+"号.因此,如果我的墨西哥朋友点击它,他将得到一个无效的号码.
我可以使用他们的一些元数据,还是我可以强迫手机添加保留国际号码的加号?
单个字符可以像这样转义:
select * from tableName where columnName like 'CU_C' escape '_';
Run Code Online (Sandbox Code Playgroud)
我需要转义多个字符("%"和"_"):
select * from tableName where columnName like 'C%U_C' escape ??;
Run Code Online (Sandbox Code Playgroud)
如何逃避多个角色?
这可能不是什么大问题,但我认为代码应该是一致的,我认为区分大小写对函数调用很重要.他们是一种让PhpStorm识别函数调用是否与其定义具有相同情况的方法吗?
偶尔我会发现updateNote看起来像是updateNOte因为我的右手打字比左边快.我想抓住这些并修复它们.
PhpStorm发现了许多其他语法项,如数据类型等,但我找不到这方面的检查.这样的检查是否存在?
我想看一下数组的第一个元素.此操作将等效于此代码:
function peek($list)
{
$item = array_shift($list);
array_unshift($list, $item);
return $item;
}
Run Code Online (Sandbox Code Playgroud)
这段代码对我来说似乎很重要,而peek通常由队列和堆栈库提供.php有一个已经构建的函数或一些更有效的方法来做到这一点?我搜索了php.net但无法找到任何东西.
为清楚起见,附加说明: 数组不一定是数字索引.数组也可能有一些未设置的项(在数字索引数组的情况下)弄乱了数字排序.假设$ list [0]是第一个元素是不安全的.
我正在使用 dompdf 库来输出一些报告。我得到了一个文件输出,但我有一些奇怪的行为。如何在dompdf中启用调试报告?
$dompdf = new Dompdf();
// something like this
$dompdf->enableDebug();
$dompdf->loadHtml($template);
$dompdf->setBasePath(realpath('./'));
$dompdf->render();
$dompdf->stream('note');
Run Code Online (Sandbox Code Playgroud) 我实现了一些代码来防止用户从未保存的表单中丢失数据,这些数据本来应该显示这一点,但我的代码似乎没有被执行。我的代码:
$(window).on('beforeunload', function (e)
{
if ($('.loading').length)
{
var confirmationMessage = 'Data is still being saved and/or loaded in the background. Leaving the page may cause your data to not be saved correctly.';
(e || window.event).returnValue = confirmationMessage; //Gecko + IE
return confirmationMessage; //Gecko + Webkit, Safari, Chrome etc.
}
if ($('form.detect-dirty.dirty').length)
{
var confirmationMessage = 'You have edited but not saved a form on this page.';
(e || window.event).returnValue = confirmationMessage; //Gecko + IE
return confirmationMessage; //Gecko + …Run Code Online (Sandbox Code Playgroud)