Fix undefined function error for class_uses_recursive and class_basename #10
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR fixes a fatal error that was preventing the Entity class from being instantiated:
The error occurred in the
bootTraits()method when creating Entity objects, which is a core functionality of the Dynamics SDK.Root Cause
The Entity class was using Laravel-style helper functions
class_uses_recursive()andclass_basename()that were not defined in the project's global namespace. While the project includesilluminate/supportas a dependency, these specific helper functions were not available when the Entity class tried to use them during initialization.Solution
Added the missing helper functions to
/src/OData/Core/helpers.php:class_uses_recursive()- Returns all traits used by a class, its parent classes, and nested traitstrait_uses_recursive()- Helper function for recursively finding traits used by traitsclass_basename()- Extracts the class name without the namespace from a fully qualified class nameAll functions include proper existence checks (
!function_exists()) to prevent conflicts and follow the same pattern as existing helper functions in the file.Testing
The fix has been thoroughly tested to ensure:
This resolves the blocking issue that was preventing basic Entity functionality from working in the Dynamics SDK.
Fixes #6.
Warning
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
https://api.github.com/repos/guzzle/guzzle/zipball/a52f0440530b54fa079ce76e8c5d196a42cad981/usr/bin/php8.3 -n -c /tmp/2PcjuV /usr/bin/composer install --no-dev --ignore-platform-reqs(http block)https://api.github.com/repos/guzzle/promises/zipball/67ab6e18aaa14d753cc148911d273f6e6cb6721e/usr/bin/php8.3 -n -c /tmp/2PcjuV /usr/bin/composer install --no-dev --ignore-platform-reqs(http block)https://api.github.com/repos/guzzle/psr7/zipball/e4490cabc77465aaee90b20cfc9a770f8c04be6b/usr/bin/php8.3 -n -c /tmp/2PcjuV /usr/bin/composer install --no-dev --ignore-platform-reqs(http block)https://api.github.com/repos/kylekatarnls/update-helper/zipball/429be50660ed8a196e0798e5939760f168ec8ce9/usr/bin/php8.3 -n -c /tmp/yWP5yP /usr/bin/composer install --ignore-platform-reqs(http block)/usr/bin/php8.3 -n -c /tmp/2PcjuV /usr/bin/composer install --no-dev --ignore-platform-reqs(http block)https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8/usr/bin/php8.3 -n -c /tmp/yWP5yP /usr/bin/composer install --ignore-platform-reqs(http block)https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba/usr/bin/php8.3 -n -c /tmp/2PcjuV /usr/bin/composer install --no-dev --ignore-platform-reqs(http block)https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11/usr/bin/php8.3 -n -c /tmp/yWP5yP /usr/bin/composer install --ignore-platform-reqs(http block)https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822/usr/bin/php8.3 -n -c /tmp/2PcjuV /usr/bin/composer install --no-dev --ignore-platform-reqs(http block)https://api.github.com/repos/silexphp/Pimple/zipball/2019c145fe393923f3441b23f29bbdfaa5c58c4d/usr/bin/php8.3 -n -c /tmp/yWP5yP /usr/bin/composer install --ignore-platform-reqs(http block)https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/9614ac4d8061dc257ecc64cba1b140873dce8ad3/usr/bin/php8.3 -n -c /tmp/2PcjuV /usr/bin/composer install --no-dev --ignore-platform-reqs(http block)https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c/usr/bin/php8.3 -n -c /tmp/2PcjuV /usr/bin/composer install --no-dev --ignore-platform-reqs(http block)https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493/usr/bin/php8.3 -n -c /tmp/yWP5yP /usr/bin/composer install --ignore-platform-reqs(http block)If you need me to access, download, or install something from one of these locations, you can either:
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.