PHP投射到我的
回答
據我所知,在PHP中你只能施放某種類型:
(int), (integer) - cast to integer
(bool), (boolean) - cast to boolean
(float), (double), (real) - cast to float
(string) - cast to string
(binary) - cast to binary string (PHP 6)
(array) - cast to array
(object) - cast to object
(unset) - cast to NULL (PHP 5)
(見Type Casting)
相反,你可以使用instanceof檢查特定類型的:
if($yourvar instanceof YourClass) {
//DO something
} else {
throw new Exception('Var is not of type YourClass');
}
對象和原始類型是不同的。由於它被稱爲原始類型,它們非常簡單,可能只有1個字節,2個字節或4個字節,最多8個字節。
當我們談論對象時,這個對象可以與其他對象具有不同的屬性。那麼PHP的問題就是,「這個對象是否真的來自我的類?」 「如何將此對象轉換爲我的類?」。因此,你不能解析馬上使用
$myObject = (ClassName) $variable
那麼怎麼投的對象呢?不知道,但通常的做法是這樣的:
- 該類
- 創建構造函數在類中,做出明確接受某些參數,也許陣列
這裏的方法是樣本:
public class MyAwesomeClass{
function __construct($thisIsArray){
$this->attributeA = $thisIsArray["A"];
$this->attributeB = $thisIsArray["B"];
......
}
static function fromArray($thisIsArray){
return MyAwesomeClass($thisIsArray);
}
}
$obj = MyAwesomeClass::fromArray($attributes);
希望PHP會以某種方式提供'''語法。然而,在這種情況發生之前,你需要''obj = MyAwesomeClass :: fromArray($ attributes);'。 –
除了爲什麼這是不可能的答案,我建議您編寫一個構建器函數,根據您的輸入創建一個對象。所以它會看起來像
$user = User::buildFromSomeArrayInput($u[0]);
,然後有一個生成器來創建一個新的User
對象,分配權屬性等你可以只是做這一切就地當然,但有一個設計器功能可確保你不會在幾個位置上這樣做,並且你可以設置私有屬性,因爲它是一個類成員函數。讓它神奇地工作是多一點工作,但不是那麼多。 您可能遇到的唯一問題是,當您確實有不同的對象時,不會公開可能需要的所有內部對象。但是這是有原因的,因爲內部可能會改變 - >你不想依賴這個。
這裏有一些黑客提出用序列化來做這件事。我建議遠離他們,因爲他們是黑客,就我而言,他不是很清楚。
原因是「假」是一個字符串,它的真實性。但是false是一個布爾值。
$res['success'] = "false"|;
if ($res['success']) { // returns true
// this cose will be executed
}
這裏又如:echo "false" == true ? 111 : 222;
,打印111
再次,...「42」是一個字符串,而42是一個數字。
您可以隨時檢查變量內容的布爾值。 「PHP不需要(或支持)變量聲明中的顯式類型定義;變量的類型由使用該變量的上下文確定,也就是說,如果將字符串值分配給變量$ var ,$ var變成一個字符串,如果一個整數值被賦值給$ var,它就變成一個整數。「
從文檔又如:
<?php
$foo = 10; // $foo is an integer
$bar = (boolean) $foo; // $bar is a boolean
?>
- 1. 投射到System.Drawing.Color?
- 2. 如何投射到我的UIViewController
- 3. com.google.gson.internal.LinkedTreeMap無法投射到我的課堂
- 4. 將我的類投射到JSONObject
- 5. 將超類的對象投射到子類 - 向下投射
- 6. C#反射 - 投射參數到類型
- 7. 將RadioButton投射到ViewGroup
- 8. 將ActiveExplorer投射到ActiveInspector
- 9. C#:投射到基地
- 10. 將IList投射到IEnumerable
- 11. 將getResultList投射到ResultSet
- 12. 將CFDictionaryRef投射到NSDictionary?
- 13. 將IOrderedEnumerable投射到ICollection
- 14. 投射到文件指針
- 15. 將NSWindow投射到NSPanel
- 16. Ljava.lang.Object;不能投射到[Ljava.lang.Integer;
- 17. 將QDialog投射到QWidget
- 18. LinearLayout無法投射到android.widget.checkbox
- 19. Android:FutureTask無法投射到MyClass
- 20. 將ListBox.SelectedObjectCollection投射到ListBox.ObjectCollection?
- 21. 將ObjectHandle投射到UserControl
- 22. 將FirebaseListObservable投射到對象
- 23. ClasscastException當投射到ViewPager
- 24. GeckoFX:將GeckoNode投射到GeckoHTMLElement
- 25. 將DataGrid行投射到DataGridCellPresenter
- 26. 將'int'投射到'Random'
- 27. .HashMap無法投射到android.database.Cursor
- 28. 將元素投射到FlowPanel?
- 29. 如何投射到物體
- 30. Foo無法投射到Foo
對象鑄造是不安全的。你爲什麼想要這樣做?不確定它是否相關,你可以使用'instanceof'來檢查對象的類。 – Raptor
'$ u [0]'是什麼? –
正如我所知,你只能投出做原始數據類型見[類型轉換] http://php.net/manual/de/language.types.type-juggling.php –