docusign-esign-php-client icon indicating copy to clipboard operation
docusign-esign-php-client copied to clipboard

Fatal error: Class 'DocuSign\eSign\Api\EnvelopesApi\ListStatusChangesOptions' not found

Open mdesign83 opened this issue 9 years ago • 16 comments
trafficstars

Dear Devs,

Composer can't load the subject class. Please generate separate php files per namespaces/classes in under proper directory path.

<?php
require 'vendor/autoload.php';

$options = new DocuSign\eSign\Api\EnvelopesApi\ListStatusChangesOptions();
// results: Fatal error: Uncaught Error: Class 'DocuSign\eSign\Api\EnvelopesApi\ListStatusChangesOptions' not found in ...

The class in the file src/Api/EnvelopesApi.php instead of src/Api/EnvelopesApi/ListStatusChangesOptions.php regarding to its namespace. Relating docs to your psr-4 composer setting: http://www.php-fig.org/psr/psr-4

Best regards, Karoly

mdesign83 avatar Jul 19 '16 10:07 mdesign83

after the require statement, try:

use DocuSign\eSign\Api\EnvelopesApi\ListStatusChangesOptions;

and then replace: $options = new DocuSign\eSign\Api\EnvelopesApi\ListStatusChangesOptions(); to: $options = new ListStatusChangesOptions();

theBull avatar May 14 '17 15:05 theBull

Dear @theBull, Have you tried this? Is it work for you?

I made the steps in the readme but got the same fatal error:

  1. composer require docusign/esign-client
  2. create a test.php with content
<?php
require 'vendor/autoload.php';
use DocuSign\eSign\Api\EnvelopesApi\ListStatusChangesOptions;
$options = new ListStatusChangesOptions();

I receive these messages: PHP 5.6.19: Fatal error: Class 'DocuSign\eSign\Api\EnvelopesApi\ListStatusChangesOptions' not found in bug.php on line 4 PHP 7.1.2: Fatal error: Uncaught Error: Class 'DocuSign\eSign\Api\EnvelopesApi\ListStatusChangesOptions' not found in bug.php:4 Stack trace: #0 {main} thrown in bug.php on line 4

mdesign83 avatar May 22 '17 20:05 mdesign83

@mdesign83 Please use the following and it should work. You can find working example in the unit test cases. Hope that helps. $options = new \DocuSign\eSign\Api\EnvelopesApi\ListStatusChangesOptions();

gsnavin avatar Jun 15 '17 23:06 gsnavin

The main problem is the generated php source is not PSR-4 compatible: http://www.php-fig.org/psr/psr-4

The subdirectory name MUST match the case of the sub-namespace names.

But neither EnvelopesApi directory exists, nor ListStatusChangesOptions is a separate file.

If I split EnvelopesApi.php file to separate classes in EnvelopesApi directory, everything is fine.

mdesign83 avatar Jun 17 '17 06:06 mdesign83

The problem is still there. Please split the classes in separate files.

moromete avatar May 06 '20 10:05 moromete

The issue still persists.

yohio avatar Jul 16 '20 12:07 yohio

I see this issue is already closed but i encountered the same problem with an integration in Symfony.

Attempted to load class "ListTemplatesOptions" from namespace "DocuSign\eSign\Api\TemplatesApi".
Did you forget a "use" statement for another namespace?

Here is my code block :

        $options = new \DocuSign\eSign\Api\TemplatesApi\ListTemplatesOptions();
        $options->setInclude(DocuSignClient::OPTION_CUSTOM_FIELDS);

        $dsTemplateApi = new \DocuSign\eSign\Api\TemplatesApi($this->docuSignClient);
        $templates = $dsTemplateApi->listTemplates($this->docuSignClient->getAccountId(), $options);

It seems that the psr4 autoload rules is not respected. The filename need to be the same than the class name as the path need to match the namespace. @gsnavin Could you reopen this issue ?

alxvgt avatar Oct 21 '20 12:10 alxvgt

A workaround can be used if you edit your composer.json as shown beelow. You can add a "classmap" entry to generate an additional autoload mapping.

    "autoload": {
        "psr-4": {
            "App\\": "src/"
        },
        "classmap": [
            "vendor/docusign/esign-client/src"
        ]
    },

alxvgt avatar Oct 21 '20 12:10 alxvgt

@LarryKlugerDS is it possible to re-open this issue or should we create another one?

The issue is still here, psr-4 autoload is not respected in DocuSign\eSign\Api\TemplatesApi.php and DocuSign\eSign\Api\EnvelopesApi.php, there should be only one file for each class.

adrienfr avatar Sep 09 '21 13:09 adrienfr

@adrienfr -- Thank you for your comment. I've re-opened the issue and notified the product manager. He'll work with our engineering group on the issue.

LarryKlugerDS avatar Sep 09 '21 14:09 LarryKlugerDS

I also just ran into this issue just now. Any updates on this?

hcker2000 avatar Apr 18 '22 18:04 hcker2000

@LarryKlugerDS any news regarding this issue?

Because of the current behavior, we can't use the API to re-send an envelope and have to manually do this through our Docusign account, not very time effective :/

adrienfr avatar Jul 19 '22 08:07 adrienfr

@harsharahul, could we please have your input on this issue?

adrienfr avatar Oct 25 '22 07:10 adrienfr

I have the same issue with template options.

szhorvath avatar May 23 '23 13:05 szhorvath

Just to note, this has just caused us problems while trying to get our new DocuSign-based solution up and running. We used the composer workaround given by @alxvgt and that works alright (thanks @alxvgt !) but it's a pretty poor developer experience when something as basic as this doesn't function properly. PSR-4 has been the standard for PHP autoloading for many years now and PHP devs tend to assume it'll "just work"...

If it can't be fixed (which would be a shame), could it be mentioned somewhere in DocuSign's main developer documentation to make it more obvious and stop future developers from wasting their time?

(EDIT: I see it is actually mentioned here: https://developers.docusign.com/docs/esign-rest-api/sdks/php/setup-and-configuration/ ... but, it's under the "Downloading the SDK from the GitHub repository" heading which is likely to be ignored by a lot of developers as they'll have just followed the composer instructions in the previous section).

vroomfondle avatar Oct 10 '23 16:10 vroomfondle