今天我发现我们的代码似乎与PDO的变化向后兼容.在PHP <5.6中,结果集从a PDOStatement到其函数fetch和fetchAll返回的行,其值为字符串或null.我们的代码依赖于此属性.
前一段时间我们更新到PHP 7.事实证明,PDO现在尝试将一些数据类型转换为其他相关类型.例如,FLOAT列在PDOStatement结果集中创建浮点值.并且TINYINT列在结果集中创建整数值.有趣的是,当一个BIGINT或一个大小INT UNSIGNED不能显示为整数而某些其他类型(例如DECIMAL)不会转换为任何类型时,它会显示为字符串.它们仍然是弦乐.我认为这是一个普遍认同的原则,将数据类型从MySQL数据库转换为PHP数据类型是有问题的,不应该由PHP本身执行,但显然PHP 7决定不这样做.
因此,PHP 7的PDO引入了一组转换规则,它在内部用于转换从数据库中选择的值,但这会破坏我的代码库,并且由于这些转换规则的不一致,我宁愿不改变我的代码库以适应他们.可能有某种设置或标志我可以切换以防止PDO转换它所获取的值吗?
我知道这样的问题在stackoverflow上已被多次询问,但即使在读完之后,我仍然感到困惑.我希望通过演示示例问题来明确表单验证的处理方式.
假设我的网站上有一个表单,有一个人填写并随后提交的字段.该模型希望控制器正确地传递该值,以便在内部处理该值.模型通过函数接收输入,该函数getInput设置以下规则:
我想我应该在里面抛出一个例外getInput,如果这些条件中的任何一个不符合的话; 毕竟,控制器传递的值与模型设置的规则不匹配.
除了上述规则之外,控制器(至少我确定这适用于控制器)还必须在脚本继续执行其他三个规则之前验证输入值是否已设置在第一位.
现在我的问题是:这些(4)规则中哪一个要由控制器验证,哪些规则由模型验证?很明显,控制器知道模型请求的内容,以便它可以调整(如果没有,它可能会面临抛出异常的后果).另一方面,拥有多个控制器似乎是多余的,这些控制器都使用模型及其getInput,验证相同类型的字符串,以便它匹配模型设置的规则.此外,如果控制器首先验证输入是否具有正确的长度 - 例如 - 并且模型在此之后立即执行完全相同的操作,一旦getInput被调用,则似乎会出现更多冗余.
在这个例子中,控制器和模型可以看作是一个伙伴关系,模型是一个脾气暴躁的完美主义者,他将验证他从控制器获得的输入,无论这些亲切的伙伴努力为他提供的行动如何带着他所有的欲望.但这种关系不是非常低效吗?
php architecture model-view-controller design-patterns structure
我想知道是否可以创建某种可以执行以下操作的构造:
$("some element").somemethod(arg),这与说的完全一样 $.somemethod("some element", arg)
我知道可以使用例如$(selector).each(callback)jquery,它似乎相当于$.each(selector, callback).不过,我发现很难理解jquery是如何做到这一点的.似乎方法"each"被定义了两次,但这是我想要避免的.这可能吗?
var image1 = new Image();
image1.src = someUrl;
// someUrl is a valid URL to a PHP file which outputs a PNG file using the imagepng function. This action caches image1 to someUrl.
image1.onload = function() {
// Some things have changed and a new image is created, which I would like to cache to someUrl.
// This is currently done by sending a session (temporary) cookie, which is recognised by the PHP file, so that it knows to take …Run Code Online (Sandbox Code Playgroud)