每一个体面的PHP程序员有一个print_r或var_dump包装他们使用,爱情和指定快捷键,我们为什么不分享我们最喜欢的人.
我想可能没有任何差别,但个人偏好,但在阅读各种PHP代码时,我遇到了两种方法来访问方法类.
什么是区别:
class Myclass
{
public static $foo;
public static function myMethod ()
{
// between:
self::$foo;
// and
MyClass::$foo;
}
}
Run Code Online (Sandbox Code Playgroud) 引用MySQL INSERT手册 - 同样适用于UPDATE:
使用关键字DEFAULT将列显式设置为其默认值.这使得编写INSERT语句更容易,这些语句将值分配给除了几列之外的所有列,因为它使您能够避免编写不包含表中每列的值的不完整VALUES列表.否则,您必须写出与VALUES列表中每个值对应的列名列表.
所以简而言之,如果我写
INSERT INTO table1 (column1,column2) values ('value1',DEFAULT);
Run Code Online (Sandbox Code Playgroud)
将插入了将column2设置为其默认值的新行 - 无论它是什么.
但是,如果我在PHP中准备并执行语句:
$statement = $pdoObject->
prepare("INSERT INTO table1 (column1,column2) values (?,?)");
$statement->execute(array('value1','DEFAULT'));
Run Code Online (Sandbox Code Playgroud)
如果列能够存储文本值,则新行将包含"DEFAULT"作为其文本值.
现在我已经为PDO编写了一个抽象层(我需要它)并且考虑引入一个问题来解决这个问题
const DEFAULT_VALUE = "randomstring";
Run Code Online (Sandbox Code Playgroud)
所以我可以执行这样的语句:
$statement->execute(array('value1',mysql::DEFAULT_VALUE));
Run Code Online (Sandbox Code Playgroud)
然后在执行绑定的方法中,我将查看发送到绑定的值,如果某些值相等self::DEFAULT_VALUE,则相应地执行操作.
我很确定有更好的方法来做到这一点.还有其他人遇到类似情况吗?
虽然我是一个体面的Web开发人员,但我和我的大多数同事在使用mod_rewrite时总是很难完成基本任务.
我阅读了手册并了解了大部分内容,但是我在生活中学到的大部分技能都是通过做.麻烦的是,没有简单的方法来调试配置.大多数情况下,如果我成功配置.htaccess文件,那绝对是随机运气,而不是通过反复试验.
我意识到可以读取Apache错误日志或将rewriteRule结果传递给GET参数并将它们呈现在PHP文件中,但这样做不方便且速度慢.
所以,问题.是否有编写和调试.htaccess指令的工具? 更新:鉴于要求库和类似的问题经常被关闭为超出SO的范围,是否有更通用的技术来做到这一点?
我正在编写一个半简单的数据库包装类,并希望有一个自动运行的提取方法:它应该只在第一次准备每个不同的语句,并且只是在连续调用时绑定并执行查询.
我想主要的问题是:如何重新准备相同的MySql语句工作,PDO会神奇地识别语句(所以我没有)并停止操作?
如果没有,我打算通过为每个不同的查询生成唯一键来实现这一目的,并将准备好的语句保存在数据库对象的私有数组中 - 在其唯一键下.我打算以下列方式之一获取数组密钥(我都不喜欢).按优先顺序排列:
basename(__FILE__, ".php") . __LINE__这个方法是这样的(只有在循环中调用我们的方法时这个方法才有效 - 大多数情况下需要这个功能)debug_backtrace有没有类似的经历?虽然我正在为之工作的系统确实值得关注优化(它本周非常大并且在不断增长),但也许我一点也不担心,做我正在做的事情没有性能上的好处?
我目前正在重写一个电子商店 - 但只有客户端,即CMS仍然主要是机智.我没有使用预先构建的框架,因为系统必须保持与CMS的向后兼容性,我必须完全自由地使用代码结构.
新系统纯粹基于MVC,我有一个Bootstrapper,它根据当前的uri加载控制器,后者使用模型进行实际工作 - 包括会话和数据库.
tl; dr这是我的第一个没有预先构建框架的项目.
在设计模式方面我很缺乏经验.我知道大多数受欢迎的工作如何工作但从未使用过.
现在我怀疑代码气味,因为我的所有模型都是纯粹由静态方法组成的类.我发现以不同的方式做这些事情没有任何好处.我通常需要在代码中的各个地方使用一些方法.即我需要在主布局中获取登录用户,检查用户权限以查看bootstraper中的当前页面,由控制器显示用户面板.如果我不使用静态,我需要每次重新实例化一个对象或保持全局对象.一次也不需要多于一个这样的课程.
我必须遗漏一些东西,因为即使我使用OOP,我的一些类对于他们的方法来说只是毫无意义的容器(有时是几个私有变量).我本来可以使用PHP4和简单的功能.
任何意见或建议将受到高度赞赏.
编辑:尽管有这些受过良好教育的答案,我仍然不相信.尽管这是因为我缺乏经验最有可能,我还是没有预见到任何与当前的设置会错.我的意思是我甚至不知道由于现在的代码架构而给我带来任何不便的情况.我希望我没有得到一个严厉的教训,因为改变任何事情为时已晚......
我开始学习VIM(我已经为我的IDE下载了一个模拟器插件),不出所料,它让我感到烦躁和极其缓慢.这一切都很好,我意识到这是一个每个人都经历的phaze.
然而,这一个功能非常令人沮丧 - 无法通过l,之前使用h或搜索多行来跳转到下一行f.
是否有一个有效的,打字速度增强的原因?
基本上,我需要在几十个站点上同步数据库数据的某些部分.完美的解决方案是创建一个托管该数据的中央服务器.
每个页面加载都必须从两个数据库服务器(本地和远程服务器)获取数据,并且写入远程服务器也很常见.
虽然数据库服务器可以像所需的硬件一样快,但我对瓶颈很谨慎:
我有权利担心吗?将数据库与cronjobs或其他技术同步会更明智吗?
除了分配奖金之外,我还在增加一个问题,希望有真实生活经验的专家出现:
我在这里有一个简单的问题.我知道cakePHP find('first')函数返回一个包含第一个结果的数组(如果找到),否则返回false.我的问题是,如果我写这样的支票怎么办:
if(result_is_array) // that means I have data
{
// do something
}
else // that means result is a boolean
{
// do something else
}
Run Code Online (Sandbox Code Playgroud)
find('first')我可以这样说,而不是检查从中获得的结果是否是一个数组:
$result = $this->MyModel->find('first');
if($result)
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,如果我在这里得到一个数组,那会TRUE在php 中评估吗?是if(array())等于true在PHP?
我是OOP Javascript的新手,我遇到了this关键字和事件的问题.
我想要实现的是:我有多个DOM对象,并且不仅要将公共事件绑定到它们,还要在全局容器中保留有关上述对象的一些数据(以提高运行时性能).
所以我所做的基本上是这样的:
function ClassThatDoesSomething() {
/* keeps node ids for processing in this.init */
this.nodes = new Array();
/* keeps processed node data for fast access */
this.nodeData = new Array();
this.sthAddNodes = function(/* ids */) {
/* appends node ids to local variable (this.nodeData) */
}
function init() {
/* gathers data from all nodes that were
added before and stores it in this.nodeData */
/* here, unsurprisingly, 'this' references the window element*/
addEvent(window,'scroll',this.scroll);
} …Run Code Online (Sandbox Code Playgroud)