现在的情况:
大大简化意味着:
新版本:
<?PHP
class blaController extends baseController {
private $intVar;
function dosomethingFunction() {
$this->intVar = 123;
$this->view('myView');
}
}
?>
Run Code Online (Sandbox Code Playgroud)
旧版:
<?PHP
$globalVar = 123;
// view "controllername" is automatically shown
?>
Run Code Online (Sandbox Code Playgroud)
我现在正在尝试编写一个包装器,以便能够在我的新MVC中使用我的旧控制器而无需重写所有内容.为此,我有一个"包装"控制器:
class wrapController extends baseController {
function dosomethingFunction() {
require 'old_dosomething.function.php';
$this->view('old_dosomething_view');
}
}
Run Code Online (Sandbox Code Playgroud)
(再一次:这非常非常简单 - 只是为了得到这个想法.不是真正的代码.)
该方法的问题在于,先前的全局变量$ globalVar现在仅存在于方法"dosomethingFunction"内,并且视图无法访问.
如果我可以强制要求表现为"在全局范围内"以便$ globalVar再次在全局范围内可用,则情况并非如此.
那么:有没有办法实现" require_global "或类似的东西?
(我的问题的一个解决方案是修改我的旧控制器以从一堆"全局"命令开始,但我更喜欢一个解决方案,我不必更改那么多旧代码.)
(注意:请不要告诉我GLOBALS是坏的.它完全忽略了这个问题的要点.请接受这是一个要求让一些旧代码在更新,更清洁的环境中工作.)
在Python中,我可以将它转换为Unicode并执行'(?u)^ [\ w] + $'正则表达式搜索,但PHP似乎不了解国际\ w,或者它是什么?
我有一个classc ASP/VBScript试图用MSXML读取UTF-8编码的XML文件的问题.文件编码正确,我可以看到所有其他工具.
构造的XML示例:
<?xml version="1.0" encoding="UTF-8"?>
<itshop>
<Product Name="Backup gewünscht" />
</itshop>
Run Code Online (Sandbox Code Playgroud)
如果我尝试在ASP中这样做...
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set ts = fso.OpenTextFile("input.xml", FOR_READING)
XML = ts.ReadAll
ts.Close
Set ts = nothing
Set fso = Nothing
Set myXML = Server.CreateObject("Msxml2.DOMDocument.4.0")
myXML.loadXML(XML)
Set DocElement = myXML.documentElement
Set ProductNodes = DocElement.selectNodes("//Product")
Response.Write ProductNodes(0).getAttribute("Name")
' ...
Run Code Online (Sandbox Code Playgroud)
...和Name包含特殊字符(特定的德语变音符号)变音符号"双字节代码"的字节被重新编码,所以我最终得到两个完全糟糕的无意义字符.什么应该是"ü"变成"¼" - 在我的输出中是四个字节,而不是两个(正确的UTF-8)或一个(ISO-8859-#).
我究竟做错了什么?为什么MSXML认为输入是ISO-8859-#以便它尝试将其转换为UTF-8?
我有一个XML SOAP结果:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<CreateCIInStockResponse xmlns="http://somenamespace.com/">
<CreateCIInStockResult>
<Status>OK</Status>
<Data>SOMERESULT</Data>
</CreateCIInStockResult>
</CreateCIInStockResponse>
</soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)
如您所见,CreateCIInStockResponse中定义的命名空间使用默认命名空间 - 未定义前缀.
如果我们使用,我可以获得状态和数据
/soap:Envelope/soap:Body/node()/node()/node()/text()
Run Code Online (Sandbox Code Playgroud)
我是对的,没有办法 - 使用XPath - 直接访问"数据"的内容?
我的问题是,我既不能修改对webservice的调用,也不能修改从webservice返回的结果.我所能做的就是使用XPath来获取数据.
有什么建议?
我有一个多线程C++应用程序,它在内存中保存一个复杂的数据结构(缓存数据).
我刚读完数据时一切都很棒.我可以拥有尽可能多的线程来访问数据.
但是,缓存的结构不是静态的.
"伪":
function getItem(key)
lockMutex()
foundItem = walkTreeToFindItem(key)
copyItem(foundItem, safeCopy)
unlockMutex()
return safeCopy
end function
function garbageCollection()
while item = nextItemInTree
if (tooOld) then
lockMutex()
deleteItem(item)
unlockMutex()
end if
end while
end function
Run Code Online (Sandbox Code Playgroud)
什么困扰我:这意味着,我在阅读时必须锁定树(以避免在我阅读时开始垃圾收集).然而 - 作为一种副作用 - 我也不能同时拥有两个阅读过程.
有什么建议?
是否存在某种"这只是一种只与写入冲突的只读动作"Mutex?
有没有一种简单的方法来解析SQL Server中的QueryString参数(例如foo = bar&temp = baz)?
我最终需要的是一个带有名称/值对的"表".
| foo | bar |
| temp | baz |
Run Code Online (Sandbox Code Playgroud)
虽然在上面的例子中它很简单但是如果字符串开始包含转义字符(例如%3D)并且当涉及UTF-8时甚至更难,则变得更难.
现有解决方案吗?SQL Server的URLDecode实现将成为天堂.
手头的工作:
我想确保我的网站用户在开始下载之前查看页面.如果他们没有查看页面但是尝试直接热链接到文件,他们应该在允许下载之前访问网页.
任何比我发送cookie更好的建议 - 在下载开始之前 - 检查cookie是否存在(通过.htaccess)?
网页和下载文件将位于不同的服务器上.
环境:
Nathan问我试图解决的问题是什么,事实上我想阻止热链接 - 例如 - 论坛.如果人们使用我们的带宽从我们的服务器下载,我想在下载开始之前向他们展示包含广告的页面.它不需要完全安全,但我们需要赚一些钱来为服务器提供资金,对吧?:)
在应用程序中,我需要使用其他用户的凭据执行其他程序.目前我使用System.Diagnostics.Process.Start来执行程序:
public static Process Start(
string fileName,
string arguments,
string userName,
SecureString password,
string domain
)
Run Code Online (Sandbox Code Playgroud)
但是,此功能不会从网络加载漫游配置文件 - 这是必需的.
我可以使用"runas/profile ..."来加载配置文件并执行命令,但这会要求输入密码.必须有一个更优雅的方式......
但是哪里?
这是一个非常基本的问题.我只是在学习ASP.NET(C#)的使命.我以前做过经典的ASP和PHP.
对于这个项目,我手上有ASP.NET 2.0.
我有一个Web表单,它有一个jqGrid Datagrid,我想通过AJAX提供XML数据.但是jqGrid不是问题所在."问题"是我应该采用的方法来生成XML.
我如何在ASP.NET中执行此操作?
做出决定后:如何输出XML?我不想使用ASP.NET的任何XML组件,因为它只是简单,简单的XML,彼此之后有一条记录.在这里使用System.Xml会有太大的开销.
<?xml version='1.0' encoding='utf-8'?>
<rows>
<page>1</page>
<total>25</total>
<records>3</records>
<row id='1'>
<cell>Row 1, Column 1</cell>
<cell>Row 1, Column 2</cell>
<cell>Row 1, Column 3</cell>
</row>
<row id='2'>
<cell>Row 2, Column 1</cell>
<cell>Row 2, Column 2</cell>
<cell>Row 2, Column 3</cell>
</row>
<row id='3'>
<cell>Row 3, Column 1</cell>
<cell>Row 3, Column 2</cell>
<cell>Row 3, Column 3</cell>
</row>
</rows>
Run Code Online (Sandbox Code Playgroud)
根据我以前使用其他脚本语言的经验,我只想打印出一个XML标签流(Response.Write).如果我在ASP.NET中这样做,我会下地狱吗?
我有一个数组($ form)从$ _POST中检索一些信息:
$form = $_POST['game'];
Run Code Online (Sandbox Code Playgroud)
现在我想使用这个数组中的值,但我不知何故失败了.
为了调试我使用了这些命令(按照完全相同的顺序,中间没有额外的行):
print_r($form);
echo '#' . $form['System_ID'] . "#";
Run Code Online (Sandbox Code Playgroud)
作为返回的输出我得到:
Array
(
['Title'] => Empire: Total War - Special Forces
['Genre_ID'] => 1
['Type'] => Spiel
['System_ID'] => 1
)
##
Run Code Online (Sandbox Code Playgroud)
我的System_ID去过哪些想法?它在print_r中,但不在下一行中用于echo?!?