Skip to content

Commit f47cf31

Browse files
authored
Merge pull request #148 from Planetbiru/feature/version-3.18.0
HTTP Request Fallback without cURL
2 parents 4030e60 + 94f2fa5 commit f47cf31

File tree

3 files changed

+133
-106
lines changed

3 files changed

+133
-106
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1307,6 +1307,13 @@ Example:
13071307
tcp://localhost:6379?db=3
13081308
```
13091309

1310+
## Enhancement: HTTP Request Fallback without cURL
1311+
1312+
MagicObject now includes a **fallback mechanism** for HTTP requests.
1313+
If the **cURL extension** is not available in the PHP environment, the library will automatically fall back to using **`stream_context_create`** with **`file_get_contents`**.
1314+
1315+
This ensures better **portability** and compatibility across different hosting environments where cURL may be disabled by default.
1316+
13101317
## Bug Fixes: Undefined Array Index in `PicoPageData::applySubqueryResult()`
13111318

13121319
Fixed an issue where an **undefined array index** error could occur when the provided data structure did not match the expected format.

docs/doc.html

Lines changed: 37 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -36531,7 +36531,7 @@ <h4>Links</h4>
3653136531
</ol>
3653236532
<h2>Description</h2>
3653336533
<p>Class PicoCurlUtil</p>
36534-
<p>This class provides an interface for making HTTP requests using cURL.</p>
36534+
<p>This class provides an interface for making HTTP requests using cURL or PHP streams as a fallback.</p>
3653536535
</div>
3653636536
<h2>Properties</h2>
3653736537
<div class="property">
@@ -36544,7 +36544,16 @@ <h3>Description</h3>
3654436544
</div>
3654536545
</div>
3654636546
<div class="property">
36547-
<div class="property-identity">2. <span class="property-label">responseHeaders</span></div>
36547+
<div class="property-identity">2. <span class="property-label">isCurlAvailable</span></div>
36548+
<h3>Declaration</h3>
36549+
<div class="property-declaratiopn"><span class="access-level">private</span> <span class="property-type">bool</span> <span class="property-name">$isCurlAvailable</span> = <span class="property-default">false</span>;</div>
36550+
<div class="docblock">
36551+
<h3>Description</h3>
36552+
<p>Flag to indicate if the cURL extension is available</p>
36553+
</div>
36554+
</div>
36555+
<div class="property">
36556+
<div class="property-identity">3. <span class="property-label">responseHeaders</span></div>
3654836557
<h3>Declaration</h3>
3654936558
<div class="property-declaratiopn"><span class="access-level">private</span> <span class="property-type">string[]</span> <span class="property-name">$responseHeaders</span> = <span class="property-default">array()</span>;</div>
3655036559
<div class="docblock">
@@ -36553,7 +36562,7 @@ <h3>Description</h3>
3655336562
</div>
3655436563
</div>
3655536564
<div class="property">
36556-
<div class="property-identity">3. <span class="property-label">responseBody</span></div>
36565+
<div class="property-identity">4. <span class="property-label">responseBody</span></div>
3655736566
<h3>Declaration</h3>
3655836567
<div class="property-declaratiopn"><span class="access-level">private</span> <span class="property-type">string</span> <span class="property-name">$responseBody</span> = <span class="property-default">&#039;&#039;</span>;</div>
3655936568
<div class="docblock">
@@ -36562,7 +36571,7 @@ <h3>Description</h3>
3656236571
</div>
3656336572
</div>
3656436573
<div class="property">
36565-
<div class="property-identity">4. <span class="property-label">httpCode</span></div>
36574+
<div class="property-identity">5. <span class="property-label">httpCode</span></div>
3656636575
<h3>Declaration</h3>
3656736576
<div class="property-declaratiopn"><span class="access-level">private</span> <span class="property-type">int</span> <span class="property-name">$httpCode</span> = <span class="property-default">0</span>;</div>
3656836577
<div class="docblock">
@@ -36578,7 +36587,7 @@ <h3>Declaration</h3>
3657836587
<div class='docblock'>
3657936588
<h3>Description</h3>
3658036589
<p>PicoCurlUtil constructor.
36581-
Initializes the cURL handle.</p>
36590+
Initializes the cURL handle if available, otherwise sets the fallback flag.</p>
3658236591
</div>
3658336592
</div>
3658436593
<div class='method'>
@@ -36633,7 +36642,7 @@ <h3>Return</h3>
3663336642
<div class="return-description"><p>Response body</p></div>
3663436643
<h3>Throws</h3>
3663536644
<div class="return-type">CurlException</div>
36636-
<div class="return-description"><p>If an error occurs during cURL execution</p></div>
36645+
<div class="return-description"><p>If an error occurs during execution</p></div>
3663736646
</div>
3663836647
</div>
3663936648
<div class='method'>
@@ -36660,28 +36669,16 @@ <h3>Return</h3>
3666036669
<div class="return-description"><p>Response body</p></div>
3666136670
<h3>Throws</h3>
3666236671
<div class="return-type">CurlException</div>
36663-
<div class="return-description"><p>If an error occurs during cURL execution</p></div>
36672+
<div class="return-description"><p>If an error occurs during execution</p></div>
3666436673
</div>
3666536674
</div>
3666636675
<div class='method'>
36667-
<div class="method-identity">6. <span class="method-label">put</span></div>
36676+
<div class="method-identity">6. <span class="method-label">executeCurl</span></div>
3666836677
<h3>Declaration</h3>
36669-
<div class="method-declaratiopn"><span class="access-level">public</span> <span class="access-level"></span> <span class="php-keyword">function</span> <span class="method-name">put</span>(<br>
36670-
&nbsp;&nbsp;&nbsp;&nbsp;<span class="parameter-type">string</span> <span class="parameter-name">$url</span>, <br>
36671-
&nbsp;&nbsp;&nbsp;&nbsp;<span class="parameter-type">mixed</span> <span class="parameter-name">$data</span>, <br>
36672-
&nbsp;&nbsp;&nbsp;&nbsp;<span class="parameter-type">array</span> <span class="parameter-name">$headers <span class="parameter-equal-sign">=</span> <span class="parameter-default">array (
36673-
)</span></span><br>
36674-
) : <span class="return-type">string</span><br>{<br>}</div>
36678+
<div class="method-declaratiopn"><span class="access-level">private</span> <span class="access-level"></span> <span class="php-keyword">function</span> <span class="method-name">executeCurl</span>() : <span class="return-type">string</span><br>{<br>}</div>
3667536679
<div class='docblock'>
3667636680
<h3>Description</h3>
36677-
<p>Executes a PUT request.</p>
36678-
<h3>Parameters</h3>
36679-
<div class="parameter-name">$url</div>
36680-
<div class="parameter-description"><p>URL for the request</p></div>
36681-
<div class="parameter-name">$data</div>
36682-
<div class="parameter-description"><p>Data to send</p></div>
36683-
<div class="parameter-name">$headers</div>
36684-
<div class="parameter-description"><p>Additional headers for the request</p></div>
36681+
<p>Executes the cURL request and processes the response.</p>
3668536682
<h3>Return</h3>
3668636683
<div class="return-type">string</div>
3668736684
<div class="return-description"><p>Response body</p></div>
@@ -36691,46 +36688,36 @@ <h3>Throws</h3>
3669136688
</div>
3669236689
</div>
3669336690
<div class='method'>
36694-
<div class="method-identity">7. <span class="method-label">delete</span></div>
36691+
<div class="method-identity">7. <span class="method-label">executeStream</span></div>
3669536692
<h3>Declaration</h3>
36696-
<div class="method-declaratiopn"><span class="access-level">public</span> <span class="access-level"></span> <span class="php-keyword">function</span> <span class="method-name">delete</span>(<br>
36693+
<div class="method-declaratiopn"><span class="access-level">private</span> <span class="access-level"></span> <span class="php-keyword">function</span> <span class="method-name">executeStream</span>(<br>
3669736694
&nbsp;&nbsp;&nbsp;&nbsp;<span class="parameter-type">string</span> <span class="parameter-name">$url</span>, <br>
36698-
&nbsp;&nbsp;&nbsp;&nbsp;<span class="parameter-type">array</span> <span class="parameter-name">$headers <span class="parameter-equal-sign">=</span> <span class="parameter-default">array (
36699-
)</span></span><br>
36695+
&nbsp;&nbsp;&nbsp;&nbsp;<span class="parameter-type">string</span> <span class="parameter-name">$method</span>, <br>
36696+
&nbsp;&nbsp;&nbsp;&nbsp;<span class="parameter-type">mixed</span> <span class="parameter-name">$data</span>, <br>
36697+
&nbsp;&nbsp;&nbsp;&nbsp;<span class="parameter-type">array</span> <span class="parameter-name">$headers</span><br>
3670036698
) : <span class="return-type">string</span><br>{<br>}</div>
3670136699
<div class='docblock'>
3670236700
<h3>Description</h3>
36703-
<p>Executes a DELETE request.</p>
36701+
<p>Executes the request using PHP streams.</p>
3670436702
<h3>Parameters</h3>
3670536703
<div class="parameter-name">$url</div>
36706-
<div class="parameter-description"><p>URL for the request</p></div>
36704+
<div class="parameter-description"></div>
36705+
<div class="parameter-name">$method</div>
36706+
<div class="parameter-description"></div>
36707+
<div class="parameter-name">$data</div>
36708+
<div class="parameter-description"></div>
3670736709
<div class="parameter-name">$headers</div>
36708-
<div class="parameter-description"><p>Additional headers for the request</p></div>
36709-
<h3>Return</h3>
36710-
<div class="return-type">string</div>
36711-
<div class="return-description"><p>Response body</p></div>
36712-
<h3>Throws</h3>
36713-
<div class="return-type">CurlException</div>
36714-
<div class="return-description"><p>If an error occurs during cURL execution</p></div>
36715-
</div>
36716-
</div>
36717-
<div class='method'>
36718-
<div class="method-identity">8. <span class="method-label">execute</span></div>
36719-
<h3>Declaration</h3>
36720-
<div class="method-declaratiopn"><span class="access-level">private</span> <span class="access-level"></span> <span class="php-keyword">function</span> <span class="method-name">execute</span>() : <span class="return-type">string</span><br>{<br>}</div>
36721-
<div class='docblock'>
36722-
<h3>Description</h3>
36723-
<p>Executes the cURL request and processes the response.</p>
36710+
<div class="parameter-description"></div>
3672436711
<h3>Return</h3>
3672536712
<div class="return-type">string</div>
36726-
<div class="return-description"><p>Response body</p></div>
36713+
<div class="return-description"></div>
3672736714
<h3>Throws</h3>
3672836715
<div class="return-type">CurlException</div>
36729-
<div class="return-description"><p>If an error occurs during cURL execution</p></div>
36716+
<div class="return-description"></div>
3673036717
</div>
3673136718
</div>
3673236719
<div class='method'>
36733-
<div class="method-identity">9. <span class="method-label">getHttpCode</span></div>
36720+
<div class="method-identity">8. <span class="method-label">getHttpCode</span></div>
3673436721
<h3>Declaration</h3>
3673536722
<div class="method-declaratiopn"><span class="access-level">public</span> <span class="access-level"></span> <span class="php-keyword">function</span> <span class="method-name">getHttpCode</span>() : <span class="return-type">int</span><br>{<br>}</div>
3673636723
<div class='docblock'>
@@ -36742,7 +36729,7 @@ <h3>Return</h3>
3674236729
</div>
3674336730
</div>
3674436731
<div class='method'>
36745-
<div class="method-identity">10. <span class="method-label">getResponseHeaders</span></div>
36732+
<div class="method-identity">9. <span class="method-label">getResponseHeaders</span></div>
3674636733
<h3>Declaration</h3>
3674736734
<div class="method-declaratiopn"><span class="access-level">public</span> <span class="access-level"></span> <span class="php-keyword">function</span> <span class="method-name">getResponseHeaders</span>() : <span class="return-type">array</span><br>{<br>}</div>
3674836735
<div class='docblock'>
@@ -36754,7 +36741,7 @@ <h3>Return</h3>
3675436741
</div>
3675536742
</div>
3675636743
<div class='method'>
36757-
<div class="method-identity">11. <span class="method-label">close</span></div>
36744+
<div class="method-identity">10. <span class="method-label">close</span></div>
3675836745
<h3>Declaration</h3>
3675936746
<div class="method-declaratiopn"><span class="access-level">public</span> <span class="access-level"></span> <span class="php-keyword">function</span> <span class="method-name">close</span>()<br>{<br>}</div>
3676036747
<div class='docblock'>
@@ -36763,7 +36750,7 @@ <h3>Description</h3>
3676336750
</div>
3676436751
</div>
3676536752
<div class='method'>
36766-
<div class="method-identity">12. <span class="method-label">__destruct</span></div>
36753+
<div class="method-identity">11. <span class="method-label">__destruct</span></div>
3676736754
<h3>Declaration</h3>
3676836755
<div class="method-declaratiopn"><span class="access-level">public</span> <span class="access-level"></span> <span class="php-keyword">function</span> <span class="method-name">__destruct</span>()<br>{<br>}</div>
3676936756
<div class='docblock'>

0 commit comments

Comments
 (0)