jjzjj

php - Invoice::setDueDate() 必须实现接口(interface) DateTimeInterface,使用 calcinai 的 Xero API

coder 2024-04-26 原文

我正在关注这个 wrapper

我有这个错误:Catchable fatal error: Argument 1 passed to XeroPHP\Models\Accounting\Invoice::setDueDate() must implement interface DateTimeInterface, string given

这是我的代码:

try{
            $lineitem = new LineItem($this->_xi);
            $lineitem->setAccountCode('200')
            ->setQuantity('5.400')
            ->setDescription('this is awesome test')
            ->setUnitAmount('9900.00');

            $contact = new Contact($this->_xi);
            $contact->setName("John Doe")
                ->setFirstName("John")
                ->setLastName("Doe")
                ->setEmailAddress("johngwapo@hot.com")
                ->setContactStatus(Contact::CONTACT_STATUS_ACTIVE);



            $invoice = new Invoice($this->_xi);
            $invoice->setType(Invoice::INVOICE_TYPE_ACCREC)
                ->setStatus(Invoice::INVOICE_STATUS_AUTHORISED)
                ->setContact($contact)
                //->setDate(\DateTimeInterface::format("Y-m-d"))
                ->setDueDate("2018-09-09")
                ->setLineAmountType(Invoice::LINEAMOUNT_TYPE_EXCLUSIVE)
                ->addLineItem($lineitem)
                ->setInvoiceNumber('10')
                ->save();



        }catch ( Exception $e ){
            $GLOBALS['log']->fatal('[Xero-createContact]-' . $e->getMessage());
            echo $e->getMessage();

        }

当我尝试这样做时:

->setDueDate(\DateTimeInterface::format("Y-m-d"))

我得到了这个错误: fatal error :非静态方法 DateTimeInterface::format() 无法静态调用,假设 $this 来自不兼容的上下文

这是我正在调用的 setDueDate 函数:

 /**
     * @param \DateTimeInterface $value
     * @return Invoice
     */
public function setDueDate(\DateTimeInterface $value)
    {
        $this->propertyUpdated('DueDate', $value);
        $this->_data['DueDate'] = $value;
        return $this;
    }

我真的不知道如何使用这个 DateTimeInterface 以及如何使用它设置 future 日期,以及如何解决所有这些错误。

最佳答案

第一个错误表明,->setDueDate($date) 方法需要一个实现 DateTimeInterface 的对象,但您只提供了一个字符串 ->setDueDate("2018-09-09")

第二个错误表明,format($format) 方法不能静态调用。它需要一个格式模式,并根据提供的模式将现有对象格式化为字符串。但是,您尝试静态调用它,提供日期字符串而不是格式模式——难怪它会失败。你需要 createFromFormat($format, $date_string)方法,创建一个 DateTime来自字符串的对象,而不是相反。

解决方案是创建一个实现 DateTimeInterface 的对象。例如DateTimeDateTimeImmutable (相同,但从未修改过)。如果您稍后可以修改此值,我建议使用 DateTime。

所以改变这一行:

->setDueDate("2018-09-09")

为此:

->setDueDate(\DateTime::createFromFormat('Y-m-d', "2018-09-09"))

它应该像魅力一样工作。

关于php - Invoice::setDueDate() 必须实现接口(interface) DateTimeInterface,使用 calcinai 的 Xero API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39405366/

有关php - Invoice::setDueDate() 必须实现接口(interface) DateTimeInterface,使用 calcinai 的 Xero API的更多相关文章

  1. ruby - 为什么必须明确指定 2 个参数才能 curry :> - 2

    考虑这个,它工作正常::>.to_proc.curry(2)[9][8]#=>true,because9>8然而,即使>是一个二元运算符,如果没有指定的元数,上面的代码将无法工作::>.to_proc.curry[9][8]#=>ArgumentError:wrongnumberofarguments(0for1)为什么两者不等价?注意:我特别想用提供的一个参数创建中间柯里化(Currying)函数,然后然后调用然后用第二个参数调用它。 最佳答案 curry必须知道传入的过程的数量,对吧?:-1来自arity的负值令人困惑,但基本上

  2. ruby-on-rails - 为什么用户必须输入 7 位数的 Twitter PIN 才能授予我的应用程序访问权限? - 2

    我正在为我的用户实现一些ruby​​onrails代码推特内容。我正在创建正确的oauth链接...类似http://twitter.com/oauth/authorize?oauth_token=y2RkuftYAEkbEuIF7zKMuzWN30O2XxM8U9j0egtzKv但在我的测试帐户授予对twitter的访问权限后,它会弹出一个页面,上面写着“您已成功授予对.我不知道用户应该在哪里输入此PIN以及他们为什么必须这样做。我认为这不是必要的步骤。Twitter应该将用户重定向到我在应用程序设置中提供的回调URL。有谁知道为什么会这样?更新我找到了thisarticle声明我需

  3. ruby-on-rails - 这个 C 和 PHP 程序员如何学习 Ruby 和 Rails? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我来自C、php和bash背景,很容易学习,因为它们都有相同的C结构,我可以将其与我已经知道的联系起来。然后2年前我学了Python并且学得很好,Python对我来说比Ruby更容易学。然后从去年开始,我一直在尝试学习Ruby,然后是Rails,我承认,直到现在我还是学不会,讽刺的是那些打着简单易学的烙印,但是对于我这样一个老练的程序员来说,我只是无法将它

  4. ruby-on-rails - 在 Rails 中,我从 Guard 那里收到这个错误,说我必须更新到新的 :cmd syntax - 2

    我刚刚更新了我的gem,当我尝试运行Guard时,出现以下错误:Guard::RSpecDEPRECATIONWARNING:The:clioptionisdeprecated.Pleasecustomizethenew:cmdoptiontofityourneed.这是我的Guard文件:guard'rspec',cli:'--drb'dowatch(%r{^spec/.+_spec\.rb$})watch(%r{^lib/(.+)\.rb$}){|m|"spec/lib/#{m[1]}_spec.rb"}watch('spec/spec_helper.rb'){"spec"}#Ra

  5. ruby - 为什么我必须对 Net::HTTP 请求的安全字符进行 URI.encode? - 2

    我尝试使用Net::HTTP向Twitter发送GET请求(出于隐私原因替换了用户ID):url=URI.parse("http://api.twitter.com/1/friends/ids.json?user_id=12345")resp=Net::HTTP.get_response(url)这会在Net::HTTP中引发异常:NoMethodError:undefinedmethodempty?'for#from/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:1

  6. ruby-on-rails - 为什么我必须在使用客户验证器后重新加载 rspec 中的记录? - 2

    我有一个模型User,它在创建后的回调中创建了选项#Userhas_one:user_optionsafter_create:create_optionsprivatedefcreate_optionsUserOptions.create(user:self)end我对此有一些简单的Rspec覆盖:describe"newuser"doit"createsuser_optionsaftertheuseriscreated"douser=create(:user)user.user_options.shouldbe_kind_of(UserOptions)endend一切正常,直到我将自

  7. ruby-on-rails - 如何在 RubyOnRails 中使用 'acts as nested set' 创建一个可排序的接口(interface) - 2

    我一直在为使用acts_as_list的模型实现一些不错的交互界面,这些界面可以对我的mRails应用程序中的列表进行排序。我有一个排序函数,在每次拖放之后使用sortable_elementscript.aculo.us函数调用并设置每条记录的位置。这是在拖放完成后处理排序的Controller操作示例:defsortparams[:documents].each_with_indexdo|id,index|Document.update_all(['position=?',index+1],['id=?',id])endend现在我正在尝试对嵌套集模型(acts_as_nested

  8. ruby - 为什么关键字参数必须作为带有符号键的散列传递,而不是 Ruby 中的字符串键? - 2

    我们不能将关键字参数作为带有字符串键的散列传递,关键字参数仅适用于作为符号键的散列。一个简单的例子:defmy_method(first_name:,last_name:)puts"first_name:#{first_name}|last_name:#{last_name}"endmy_method({last_name:'Sehrawat',first_name:'Manoj'})#=>first_name:Manoj|last_name:Sehrawatmy_method({first_name:'Bob',last_name:'Marley'})#=>first_name:Bo

  9. ruby-on-rails - 使用 spork 的 Rails 项目 - 总是必须使用 spork? - 2

    如果我在我的rails项目中使用spork并且有一个像这样的spec_helper.rb文件require'spork'Spork.preforkdo...endSpork.each_rundo...end这是否意味着当我通过rspecspec运行我的规范时,我需要始终让spork运行?意思是,如果我还没有在终端窗口中执行$spork,是否意味着我的规范将无法正常运行? 最佳答案 没有。我们的spechelper中有spork,但我们不会经常使用它,因为它会减慢大型套件的整体测试速度。我们仅在快速迭代时运行spork,在TDD期间重

  10. ruby-on-rails - Rails 还是 Sinatra? PHP程序员入门学习哪个好? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我使用PHP的时间太长了,对它感到厌倦了。我也想学习一门新语言。我一直在使用Ruby并且喜欢它。我必须在Rails和Sinatra之间做出选择,那么您会推荐哪一个?Sinatra真的不能用来构建复杂的应用程序,它只能用于简单的应用程序吗?

随机推荐