小编Art*_*cto的帖子

如何在PHP中的现有类中添加方法?

我正在使用WordPress作为CMS,我想扩展其中一个类,而不必继承另一个类; 即我只想在该类中"添加"更多方法:

class A {

    function do_a() {
       echo 'a';
    }
}
Run Code Online (Sandbox Code Playgroud)

然后:

function insert_this_function_into_class_A() {
    echo 'b';
}
Run Code Online (Sandbox Code Playgroud)

(将后者插入A类的某种方式)

和:

A::insert_this_function_into_class_A();  # b
Run Code Online (Sandbox Code Playgroud)

这在顽固的PHP中甚至可能吗?

php inheritance class extend

18
推荐指数
2
解决办法
3万
查看次数

如何在git合并中强制共同的祖先?

假设我有一个叫做master分支的分支叫做分支upstream_lib.

分支master有一个子目录lib,它基于分支上的代码upstream_lib; 更改upstream_libmaster定期与分支合并(使用子树策略).该lib目录中master有一些自己没有的修改upstream_lib.

但是,假设这两个分支没有共同的历史记录(例如,因为存储库只是迁移到git),或者合并基础不正确,因为合并upstream_lib已被压扁,存在一些变基或其他.

问题是:给定一组新的更改upstream_lib,如何强制合并作为共同祖先的特定修订版upstream_lib

git merge

17
推荐指数
1
解决办法
4504
查看次数

如何在Java中针对服务器验证Kerberos票证?

我们正在使用JAAS在使用Windows Kerberos票证缓存的Java应用程序中启用单点登录.我们的jaas.conf配置文件如下所示:

LoginJaas {
  com.sun.security.auth.module.Krb5LoginModule required
  useTicketCache=true
  doNotPrompt=true
  debug=true;
};
Run Code Online (Sandbox Code Playgroud)

有了这个,我们可以创建一个Jaas LoginContext并成功获取用户的Kerberos票证.我们使用JMI将此票证发送到服务器应用程序.我们无法做的是在服务器上验证Kerberos票证实际上是由我们的Active Directory创建的.

目前,我们通过简单检查服务器主体(KerberosTicket.getServer())名称是否在领域部分中具有我们的域名来对票证进行非常不安全的验证.但是,当然,任何人都可以使用相同的域名设置自己的Kerberos服务器,并使用该票证来启动应用程序.

我发现的一个想法是使用Kerberos票证对Active Directory LDAP进行身份验证.遗憾的是,我们使用Windows 7并重新使用Kerberos票证对LDAP进行身份验证仅在设置注册表项时有效(请参阅http://java.sun.com/j2se/1.5.0/docs/guide/security/jgss /tutorials/Troubleshooting.html,搜索allowtgtsessionkey).这对我们的用户来说是不可接受的.

有没有办法根据我们的Active Directory服务器验证票证?我怀疑有办法检查KerberosTicket.getServer()票证是否等于我们服务器的票证,但我不知道该怎么做.更新:KerberosTicket().getServer()仅返回KerberosPrincipal,它只包含服务器票证名称和域,因此不适合验证.

感谢您的帮助,memminger

java kerberos active-directory jaas single-sign-on

16
推荐指数
2
解决办法
1万
查看次数

使用SWIG创建PHP C/C++扩展模块

我已经使用"老式方式"为PHP编写了一些C/C++扩展模块 - 即使用手动方式(如Sarah Golemon在她的书中所述).

这对我来说太蠢了,因为我很懒,并且想尽可能地自动化.此外,我现在使用SWIG生成Python的扩展,我开始喜欢使用它.

我正在考虑使用SWIG生成我未来的PHP扩展.我在生产服务器上使用PHP v5.2(及更高版本).

我的问题是:

  1. SWIG PHP界面是否稳定(即准备生产)?
  2. 如果你的回答是肯定-are问题1 在使用它制作的网站?
  3. 使用SWIG创建PHP扩展模块时,是否需要注意任何"陷阱"?

php c c++ swig php-extension

15
推荐指数
1
解决办法
1335
查看次数

如何使用PHP将所有字符转换为等效的html实体

我想把它转换hello@domain.com

hello@domain.com
Run Code Online (Sandbox Code Playgroud)

我试过了:

url_encode($string)
Run Code Online (Sandbox Code Playgroud)

这提供了我输入的相同字符串,返回@符号转换为 %40

还尝试过:

htmlentities($string)
Run Code Online (Sandbox Code Playgroud)

这提供了相同的字符串.

我使用的是UTF8字符集.不确定这是否有所作为....

php string encode utf-8 html-entities

15
推荐指数
2
解决办法
1万
查看次数

是否可以在Haskell中创建PHP扩展?

是否可以使用Haskell创建PHP扩展?

通常PHP扩展是使用C编写的.使用Haskell FFI来提供存根C扩展的功能(甚至是个好主意)?

这种方法的注意事项是什么?Zend是否会在后台执行一些会破坏这种方案的魔法?

php c haskell ffi php-extension

12
推荐指数
1
解决办法
921
查看次数

Visual Studio 2010 Intellisense对C代码进行了波动

Visual Studio 2010中的Intellisense将C代码解释为C++,并将错误标记为不存在,如:

struct my_struct *s = malloc(sizeof *s);
Run Code Online (Sandbox Code Playgroud)

这是有效的C,但不是有效的C++.

有没有什么办法解决这一问题?

c intellisense visual-studio-2010

9
推荐指数
1
解决办法
3194
查看次数

如何取代回车

我有一个变量($myClass[0]->comment;),其中有回车符.我想用" \n" 替换该变量中的所有回车符,我该怎么做.
下面可能会有所帮助

$myClass[0]->comment;    
Run Code Online (Sandbox Code Playgroud)

这是一些输出

<?php  
          $test = explode(chr(13),$myClass[0]->comment );  
          var_dump($test);  

?> 
Run Code Online (Sandbox Code Playgroud)

OUTPUT

array  
  0 => string '12' (length=2)  
  1 => string '  
' (length=1)   
  2 => string '  
22' (length=3)  
Run Code Online (Sandbox Code Playgroud)

我想要的只是\n回车而不是回车.

php

9
推荐指数
3
解决办法
3万
查看次数

在PHP中运行时重命名函数

在PHP 5.3中有一种重命名函数或"挂钩"函数的方法.

还有就是rename_function()因为〜2004年已被打破"APD"内.如果您尝试在PHP 5.3上构建它,您将收到此错误:

'struct _zend_compiler_globals' has no member named 'extended_info'

这是一个非常容易修复的错误,只需更改此行:

GC(extended_info) = 1;

CG(compiler_options) |= ZEND_COMPILE_EXTENDED_INFO;

我修改了我的php.ini,APD出现在我的phpinfo()中.但是,当我调用rename_function()PHP页面没有加载,我得到了我的分段错误/var/log/apache2/error.log.

反正有没有修复APD与现代版本的PHP一起工作?或者是否有另一种重命名函数的方法? 为什么地球上的重要功能不在PHP中!??!?!(得爱蟒蛇:)

php debugging pecl php-extension

8
推荐指数
1
解决办法
2938
查看次数

Ruby:前向接收器,参数和跨越块的阻塞

给出这样的代码:

p = proc do |*args, &block|
  p self
  p args
  p block[] if block
end

q = proc do |*args, &block|
  p 'before'
  instance_exec(*args, &p)
end

o = Object.new
o.define_singleton_method(:my_meth, q)
o.my_meth(1, 2) { 3 }
Run Code Online (Sandbox Code Playgroud)

我怎样才能完全从呼叫转发pq在保持q的接收器?基本上我也想打印3,但是instance_exec,像所有红宝石方法一样,只需要一个块.是否有可能不改变p,这样我就可以使用pq互换(的想法是让q有时包p).

ruby proc

8
推荐指数
1
解决办法
125
查看次数