如果我不知道主机名,有没有办法在没有Javascript /服务器端脚本的情况下链接到同一个盒子上的不同端口号?
例如:
<a href=":8080">Look at the other port</a>
Run Code Online (Sandbox Code Playgroud)
(这个例子不起作用,因为它只会对待:8080作为我要导航到的字符串)
我正在构建一个Web服务,并且有一个接受POST的节点来创建新资源.资源需要两种内容类型之一 - 我将定义的XML格式或表单编码变量.
这个想法是消费应用程序可以直接POST XML并从更好的验证等方面受益,但是还有一个HTML接口将POST表单编码的东西.显然XML格式有一个charset声明,但我看不到如何通过查看POST来检测表单的charset.
Firefox中表单的典型帖子如下所示:
POST /path HTTP/1.1
Host: www.myhostname.com
User-Agent: Mozilla/5.0 [...etc...]
Accept: text/html,application/xhtml+xml, [...etc...]
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 41
field1=value1&field2=value2&field3=value3
Run Code Online (Sandbox Code Playgroud)
这似乎不包含任何有用的字符集指示.
从我所看到的,application/x-www-form-urlencoded类型完全在HTML中定义,它只是列出了%-encoding规则,但没有说明数据应该在什么字符集中.
基本上,如果我不知道HTML最初呈现的字符集,有没有办法告诉字符集?否则,我将不得不尝试根据字符存在来猜测字符集,而且总是有点不确定.
在我的很多PHP项目中,我最终得到的是具有非公共函数的类,我不打算扩展它们.
最好将这些声明为受保护或私有?
我可以看到两种方式的参数 - 将它们设为私有是一种更为保守的方法,但可以认为如果我希望扩展方法并明确哪些方法由基类扩展,它们可以在以后被保护.
另一方面,使用私有部分反社会,因为它阻止理论上的未来开发人员扩展我的代码而不进行修改?
在Zend视图中,我可以将部分模板应用于可迭代元素,如下所示:
$this->partialLoop('template.phtml', $iterable);
Run Code Online (Sandbox Code Playgroud)
但是在模板中,只有$ iterable的元素可用,是否有另一种方法将额外的数据传递给部分?
在我的代码中,我正在生成URL的哈希值(实际上是无限长度).我目前正在使用sha1(),我知道它有一个很小的碰撞机会,但我有多达255个字节来存储哈希,所以我觉得我可以使用那个可用空间来降低碰撞的几率进一步.
有没有:
或者,sha1的20字节哈希是否适合任何事情,我应该不再担心它了?
目前在我的ZF项目中有一个像这样的URL结构:
/news/index/news_page/1/blog_page/2
Run Code Online (Sandbox Code Playgroud)
当我生成我的分页时,我使用URL帮助程序,如下所示:
<?php echo $this->url(array('blog_page'=>3)); ?>
Run Code Online (Sandbox Code Playgroud)
哪个生成这样的URL:
/news/index/news_page/1/blog_page/3
Run Code Online (Sandbox Code Playgroud)
我想做的是使用自定义路由来获得更好的URL,如下所示:
new Zend_Controller_Router_Route(
'news/:news_page/:blog_page',
array('controller' => 'news', 'action' => 'index')
);
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试在视图助手中使用此路径时:
<?php echo $this->url(array('blog_page'=>3), 'newsIndex'); ?>
Run Code Online (Sandbox Code Playgroud)
它抛出一个错误,因为我没有在params中指定news_page.
我怎样才能解决这个问题,并告诉网址助手使用这些参数的"当前"值?