我正在构建一个包含许多输入验证的类,我决定将它们放在__set方法中(我不确定这是否是正确的形式,因为我有有限的OOP经验).这似乎工作正常,当从类外部传递无效值时抛出正确的错误.但是,如果在类中修改了变量,则__set方法似乎完全被忽略.
任何见解都会非常感激
//RESULT:::::::::::::::::::::::::::::::
// PASS: Testing : hello
// PASS: Testing exception handling
// __SET: Setting b to 123
// PASS: Testing with valid value: 123
// FAIL: Testing exception handling World2
<?php
class Test {
public $a;
private $b;
function __set( $key, $val ) {
switch( $key ) {
case 'b':
if( !is_numeric( $val ) ) throw new Exception("Variable $b must be numeric");
break;
}
echo ( "__SET: Setting {$key} to {$val}<br/>" );
$this->$key = $val;
}
function __get( …Run Code Online (Sandbox Code Playgroud) 我认为将一种常见的方法添加到Apache Web服务器是将它配置为:
ScriptAlias /php5.3 /usr/local/php5.3/bin
Action application/php5.3 /php5.3/php-cgi
AddType application/php5.3 .php
Run Code Online (Sandbox Code Playgroud)
现在我尝试为Python编写类似的配置:
ScriptAlias /python /usr/bin
Action application/python /python/python
AddType application/python .py
Run Code Online (Sandbox Code Playgroud)
我有一个小的测试脚本,如下所示:
print "Content-Type: text/html\n\n"
print "Test"
Run Code Online (Sandbox Code Playgroud)
但是,由于apache错误日志显示以下内容,因此似乎有些错误:
Premature end of script headers: python
Run Code Online (Sandbox Code Playgroud)
所以我的第一个问题是我的python响应不对.但是有Content-Type和两个换行符.此外,调用的类似PHP脚本的输出也提供php-cgi了完全相同的输出.
此外,我还没有找到一个教程,展示如何让python以这种方式工作.也许这是不可能的,但后来我很好奇为什么会这样呢?或者我错过了什么?
我正在使用用Java编写并使用Apache Axis 1.3的第三方Web服务。该服务有许多重载操作。当WCF Svcutil生成代理时,它通过在操作名称后面附加一个数字来重命名重载的操作。例如:
getDataResponse getData(getDataRequest request);
getDataResponse1 getData1(getDataRequest1 request);
Run Code Online (Sandbox Code Playgroud)
这本身不是问题,但是当Svcutil生成请求/响应消息时,它忽略了更改MessageContracts的WrapperName属性。
[MessageContractAttribute(
WrapperName = "getData",
WrapperNamespace = "http://namespace.com",
IsWrapped = true)]
public partial class getDataRequest1 { .. }
Run Code Online (Sandbox Code Playgroud)
当客户端应用程序尝试打开代理时,将引发以下异常:
InvalidOperationException:操作getData1中的RPC消息getDataRequest1具有无效的主体名称getData。它必须是getData1
如果我更改WrapperName =“ getData1”,则代理将打开,但是...
有什么方法可以生成和/或修改代理,以便所有操作都可以与WCF一起使用?
标记
我有一个用例,我将处理本地文件路径(例如c:\foo\bar.txt)和URI(例如http://somehost.com/fiz/baz).我也将处理相对和绝对路径,所以我需要像Path.Combine朋友一样的功能.
我应该使用现有的C#类型吗?该URI类型可能会奏效,但在路过一目了然,它似乎只是URI.
使用泛型而不是继承有什么情况及其相关的好处,反之亦然,它们应该如何最好地结合起来?
谢谢你的回答.
我将尽力说明这个问题的动机:我有一个如下所示的课程:
class InformationReturn<T> where T : Info
{
InformationReturn(Employee employee, List<T>) { ... }
}
Run Code Online (Sandbox Code Playgroud)
现在假设我有一个采用InformationReturn参数的存储库,它必须根据Info对象T的类型在数据库中编写不同的字段.为T类型创建不同的存储库是否更好; 一个使用反射来确定类型的存储库; 或者是否有更好的方法使用继承功能/使用泛型?
注意:其他客户端代码也必须根据T的类型进行不同的操作.
医生说:
在垃圾收集环境中,如果需要,向池中发送排泄消息会触发垃圾回收; 然而,释放是一种无操作.在参考计数环境中,排水与释放具有相同的效果.因此,通常应使用排水而不是释放.
如果我做对了,他们说我应该总是使用-drain,无论周围有垃圾收集还是引用计数都没关系.在iPhone上没有GC,所以无论如何我发送-drain?
不幸的是,该文件只讨论了Cocoa,而不是Cocoa Touch或iPhone.所以我不确定那里是否适用.
我有一些二维数组,如:
int shape1[3][5] = {1,0,0,
1,0,0,
1,0,0,
1,0,0,
1,0,0};
int shape2[3][5] = {0,0,0,
0,0,0,
0,1,1,
1,1,0,
0,1,0};
Run Code Online (Sandbox Code Playgroud)
等等.
我如何制作一系列指针?
我尝试了以下,但它们不起作用(警告:从不兼容的指针类型初始化):
int *shapes[]= {&shape1,&shape2};
int *shapes[]= {shape1,shape2};
int **shapes[]= {&shape1,shape2};
Run Code Online (Sandbox Code Playgroud)
有帮助吗?
我想避免在我的代码中进行如下的许多检查:
myObj.someStringField = rdr.IsDBNull(someOrdinal)
? string.Empty
: rdr.GetString(someOrdinal);
Run Code Online (Sandbox Code Playgroud)
我想我可以让我的查询通过执行以下操作来处理空值:
SELECT myField1, [isnull](myField1, '')
FROM myTable1
WHERE myField1 = someCondition
Run Code Online (Sandbox Code Playgroud)
我虽然使用SQLite,但似乎没有认识到这个isnull功能.我也试过其他数据库中的一些公认的那些等效(NVL(),IFNULL()和COALESCE()),但SQLite的似乎不认识任何人.
有没有人有任何建议或知道更好的方法来做到这一点.不幸的是,数据库没有所有字段的默认值.另外,LEFT JOIN在某些情况下我需要使用一些子句,其中返回的某些字段将为null,因为LEFT JOIN表中的匹配记录将不存在.
那是什么意思?
在一个项目的说明中,它说"冻结Rails宝石".这与冻结Rails版本有什么不同?
什么是冷冻的?
我在Windows上使用gVim.我的代码^M在行尾显示字符.我:set ff=dos以前没有用.^M现有行的字符仍然存在,但不会显示我输入的换行符.我已将模式切换为mac(显示^J字符)和unix(也显示^M字符)并返回dos.有没有人见过这个?