可能重复:
有没有办法在PHP中编程100%面向对象?
我想要完成的事情看起来像这样:
<?php
//index.php
class Site{
public static function main(){
// starts all the processing of the site
}
}
?>
Run Code Online (Sandbox Code Playgroud)
因此,当有人访问该网站时,index.php
该网站将启动,而无需在课外进行任何代码.
是的我知道我可以使用__autoload
甚至spl_autoload_register
处理类的自动加载,但仍然很可能需要在类之外添加.
我怀疑这是可能的,但我不知道为什么这是不可能的.
我今天遇到了一个非常意想不到的错误,虽然我能够找到一种方法来解决整个问题,但我不确定我是否完全理解它为什么会这样做.
我正在使用的代码最初是用JDK 7环境编写的,当然是针对JRE 7.在代码中我使用了一个ConcurrentHashMap
并且需要迭代地图中的键.为此,我使用的map.keySet()
是根据JavaDocs应该返回的Set<K>
.这很好用,直到我们的构建环境切换到JDK8.
当我们转移到JDK8时,我确保在调用javac时调用1.7的目标/源.当代码在想要遍历地图的键时开始失败时,我感到非常惊讶.没有抛出任何错误,没有异常,线程只是停止了.之后做一些研究,我发现Java8的实施ConcurrentHashMap
的.keySet()
方法返回一个KeySetView<K,V>
.
我通过使用开关解决了这一问题map.keySet()
,以得到一个Enumeration<K>
使用map.keys()
.
现在我对这个问题的猜测是,虽然项目是针对Java7编译的,因为使用了JDK8,Java8库被包含在内,但为什么在它出现不匹配时它没有抛出错误或异常?
正如这里所要求的是代码片段:
class MapProcessing
{
private ConcurrentHashMap<String, Object> map = new ConcurrentHashMap<String, Object>();
public MapProcessing()
{
map.put("First",new Object());
map.put("Second",new Object());
map.put("Third",new Object());
}
public void processing()
{
// when calling this type of loop causes a freeze on our system.
for(String key : map.keySet())
{
System.out.println(key);
}
}
public void working()
{
// This is what …
Run Code Online (Sandbox Code Playgroud) 我正在尝试通过 TCP/IP 套接字连接两个单独的应用程序。在这种情况下,两个应用程序都不作为另一个应用程序的“客户端”运行,将它们描述为两个需要相互通信的独立服务器会更容易。
为了接收数据,我正在使用该InputStream.Read()
函数,一旦它收到一个值,-1
它就应该停止处理。然而,现在的问题是,如果另一组数据出现,则InputStream
已经位于流末尾 ( EOS
),因此所有正在发送的新数据都将被丢弃或忽略。我发现解决此问题的唯一方法是,一旦到达流结束,我关闭套接字并重新打开它,我认为这可能可以通过其他方式更好地处理。
如何重置 InputStream 以便为可能出现的下一组数据做好准备?
我有一个项目,我必须解析格式化的ASCII数据.解析器有可能识别格式化中的问题(预期未找到,发现意外数据).通常,如果我发现某些事情失败,我会抛出异常.但是,这一次,我想继续解析过程,并将解析器错误存储在结束类中.我的问题是,是否可以创建一个新的Exception并将其存储在一个List而不是抛出它以免停止处理?