如何在PHP名称间隔环境中检查对象的类,而不指定完整的命名空间类.
例如,假设我有一个对象库/实体/合同/名称.
以下代码不起作用,因为get_class返回完整的命名空间类.
If(get_class($object) == 'Name') {
... do this ...
}
Run Code Online (Sandbox Code Playgroud)
namespace magic关键字返回当前命名空间,如果测试对象具有另一个命名空间,则该命名空间无效.
我可以简单地用命名空间指定完整的类名,但这似乎锁定了代码的结构.如果我想动态更改名称空间,也没什么用处.
任何人都可以想到一个有效的方法来做到这一点.我猜一个选项是正则表达式.
我正在寻找ZF2路由器配置的一些帮助.
我想在开发环境中向单个模块添加多个控制器,尽管最终必须弄清楚如何指定特定的路由.
为此,我目前正在尝试使用MVC快速入门文档中指定的通用module.config.然而,这似乎没有像ZF2文档所建议的那样执行.
http://framework.zend.com/manual/2.0/en/modules/zend.mvc.quick-start.html
文档说明:
"ZendSkeletonApplication提供了一个"默认路由",可能会让你进行此操作.该路由基本上需要"/ {module}/{controller}/{action}",它允许你指定:"/ zend-user /你好/世界".我们将在这里创建一条主要用于说明目的的路线,因为建议使用明确的路线."
但是,控制器渲染/ landlord,/ landlord/home/index,而不是/ landlord/sandbox/index.家庭和沙箱是控制器.Sandbox的命名遵循命名约定"SandboxController".我的看法是,文档中代码的child_routes部分可能需要我错过的某种修改.
在沙箱实例中,我在404错误页面上收到此错误.
Landlord\Controller\Sandbox(解析为无效的控制器类或别名:Landlord\Controller\Sandbox)
我尝试将'Landlord\Controller\Sandbox'=>'Landlord\Controller\SandboxController'添加到invokables,但这会产生错误.
我的控制器如下:
return array(
'controllers' => array(
'invokables' => array(
'Landlord\Controller\Home' => 'Landlord\Controller\HomeController',
),
),
'router' => array(
'routes' => array(
'landlord' => array(
'type' => 'Literal',
'options' => array(
// Change this to something specific to your module
'route' => '/landlord',
'defaults' => array(
// Change this value to reflect the namespace in which
// the controllers for your module are found
'__NAMESPACE__' => …Run Code Online (Sandbox Code Playgroud) 我想构建一个应用程序,在用户未登录时代表我的用户管理 Google 日历中的约会。
该应用程序将是一个预订服务,订阅用户(我们的服务提供商)将预订他们不可用的时间,客户将看到服务提供商谷歌日历的忙/闲表示
该应用程序需要能够创建、删除和读取约会。
我已进入 Google Developer's Console 并拥有可弹出 Google 权限屏幕的工作代码,然后重定向到成功创建新约会的 Url。
我可以访问其他日历,但前提是他们当时登录了 Google 服务。
$client = new \Google_Client();
$client->addScope('https://www.googleapis.com/auth/calendar');
$service = new \Google_Service_Calendar($client);
$authUrl = $client->createAuthUrl();
Run Code Online (Sandbox Code Playgroud)
如果用户正在管理他们自己的日历,这可以正常工作。但是,我想代表他们管理约会。这将包括其他各方在日历中输入约会 - 即当日历未登录时。
我需要的是应用程序获得持久访问我用户日历的持久权限吗?
有谁知道这是否可能?关于我如何解决这个问题的想法将不胜感激。
php google-calendar-api google-api zend-framework2 google-client
有谁知道在哪里存储ZF2部分循环模板文件?
我将模板存储在标准Zend文件结构下的相关视图文件夹中.这在ZF1下有效.但是在尝试重新编码代码以使用ZF2时,我收到此错误?
Fatal error: Uncaught exception 'Zend\View\Exception\RuntimeException' with message
'Zend\View\Renderer\PhpRenderer::render: Unable to render template
"listingsPartial.phtml"; resolver could not resolve to a file' in C:\zendProject\zf2\vendor\zendframework\zendframework\library\Zend\View\Renderer\PhpRenderer.php:454 Stack trace: #0 C:\zendProject\zf2\vendor\zendframework\zendframework\library\Zend\View\Helper\Partial.php(73):
Zend\View\Renderer\PhpRenderer->render('listingsPartial...') #1 C:\zendProject\zf2\vendor\zendframework\zendframework\library\Zend\View\Helper\PartialLoop.php(70): Zend\View\Helper\Partial->__invoke('listingsPartial...', Array) #2 [internal function]: Zend\View\Helper\PartialLoop->__invoke('listingsPartial...', Array) #3 C:\zendProject\zf2\vendor\zendframework\zendframework\library\Zend\View\Renderer\PhpRenderer.php(355):
call_user_func_array(Object(Zend\View\Helper\PartialLoop), Array) #4 C:\zendProject\zf2\module\Landlord\view\landlord\home\index.phtml(42):
Zend\View\Renderer\PhpRenderer->__call
('p in C:\zendProject\zf2\vendor\zendframework\zendframework\library\Zend\View\Renderer\PhpRenderer.php on line 454
Run Code Online (Sandbox Code Playgroud)
我对部分循环的调用如下所示:
echo $this->partialLoop('listingsPartial.phtml',$model);
Run Code Online (Sandbox Code Playgroud)
调用它的模板和视图页面存储在同一文件中.我想知道是否需要在某处列出listingPartial模板,即在模块或配置文件中?
我的目录结构如下所示:
> zf2
-module
-moduleName
-view
> -moduleName
> -controllerName
> - *the view file and partial template file are stored here-*
Run Code Online (Sandbox Code Playgroud)
任何建议赞赏.
我试图通过各种j/script本机日期对象方法更新日期对象,但很困惑为什么更改似乎应用于页面上的所有日期对象.
我最初发现了一个帖子,建议在日期原型中添加一个方法,但这改变了所有日期对象.然后我简化了,发现两个日期仍然在更新.我很感激有关如何防止这种情况的任何建议.我想要的是一个starTime和一个看起来有点像这样的endTime.(注意:我最终会变成一个功能).
time1 = new Date();
alert(time1);//returns Sat May 26 11:15:41 EDT 2012
time2=time1;
time2.setMinutes(time2.getMinutes()+10);
alert(time1); //returns Sat May 26 11:25:41 EDT 2012
alert(time2);//returns Sat May 26 11:25:41 EDT 20112
Run Code Online (Sandbox Code Playgroud)
问题:如果我只更新date2,为什么date2 = date1.
如何将服务管理器注入Doctrine存储库以允许我检索Doctrine Entity Manager?
我使用ZF2-Commons DoctrineORMModule并且正在尝试实现Doctrine Tutorial(下面链接中的教程底部)中列出的存储库示例:
http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/tutorials/getting-started.html
但是,我不断收到一条消息" 致命错误:在C:\ zendProject\zf2 ... "中的非对象上调用成员函数get(),这表明我没有服务定位器的工作实例.
我的Doctrine存储库看起来像这样:
namespace Calendar\Repository;
use Doctrine\ORM\EntityRepository,
Calendar\Entity\Appointment,
Calendar\Entity\Diary;
use Zend\ServiceManager\ServiceLocatorAwareInterface;
use Zend\ServiceManager\ServiceLocatorInterface;
class ApptRepository extends EntityRepository implements ServiceLocatorAwareInterface
{
protected $services;
public function setServiceLocator(ServiceLocatorInterface $serviceLocator)
{
$this->services = $serviceLocator;
}
public function getServiceLocator()
{
return $this->services;
}
public function getUserApptsByDate()
{
$dql = "SELECT a FROM Appointment a";
$em = $this->getServiceLocator()->get('Doctrine\ORM\EntityManager');
$query = $em()->createQuery($dql);
return $query->getResult();
}
}
Run Code Online (Sandbox Code Playgroud)
然后,我想使用以下模式在我的控制器中调用它:
$diary = $em->getRepository('Calendar\Entity\Appointment')->getUserApptsByDate();
Run Code Online (Sandbox Code Playgroud)
编辑:附加的链接表明我可能需要将类转换为服务,
/sf/answers/945615961/
但是,如果这是最佳路线,那么我将如何让我的Doctrine Entity了解该服务.目前,我在指向该类的doc块中包含一个注释. …
php ×4
class ×1
date ×1
doctrine ×1
google-api ×1
javascript ×1
module ×1
mysql ×1
namespaces ×1
object ×1
router ×1
service ×1
transactions ×1
view ×1
zend-db ×1