php 中如何得到一个对象的类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 中如何得到一个对象的类型相关的知识,希望对你有一定的参考价值。

php中如何获得一个对象的类型?如何根据类型获得这个类有什么方法和属性呢?请给出样例代码。

得到一个对象的类型,使用gettype()函数:

<?php
echo gettype(1); // 输出integer
echo gettype(array()); // 输出array


得到一个对象是哪个类的实例,使用get_class()函数:

<?php
$o = new stdClass();
echo get_class(); // 输出stdClass


得到一个类或对象的方法和属性,要使用反射:

<?php
class MyClass 
    public $var;
    public function foo() 

$ref = new ReflectionClass('MyClass');
$ref->getProperties(); // 会返回一组对象,用法参考PHP手册
$ref->getMethods(); // 会返回一组对象,用法参考PHP手册

$obj = new MyClass();
$ref = new ReflectionObject($obj);
$ref->getProperties();
$ref->getMethods();

参考技术A

带有自动补全代码功能的编辑器可以提供相关的信息。但是某些情况下无法由于编辑器无法确认对象类型(例如函数返回的对象可能是类型a或b的时候)就没有提示了,这个时候对于支持代码补全功能的编辑器来说可以用以下的两种方法使其能够产生提示。

    ($obj instanceof mysql_DB); 这行之后再输入$obj就能看到提示了

    /** @var $obj Mysql_DB **/; 通过这样的注释也可以起到相同的作用


如果你不知道当前对象是哪个类的实例可以测试一下,比如print_r($obj),echo get_class($obj)之类的。

如何修复元素类型无效:期望字符串(用于内置组件)或类/函数(用于复合组件)但得到:对象

【中文标题】如何修复元素类型无效:期望字符串(用于内置组件)或类/函数(用于复合组件)但得到:对象【英文标题】:How to fix Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object 【发布时间】:2019-04-02 14:08:49 【问题描述】:

我正在尝试运行 ReactRails 应用程序并尝试运行一个非常简单的 react-select 组件。但是,在同一个文件中,如果我只打印一个简单的 h2 元素,它可以工作,但 &lt;Select/&gt; 不起作用。它给出了:

Uncaught Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object.

我正在尝试使用react-select 组件。我已经通过yarn add 命令安装了它。

User.jsx:

var React = require("react")
var Select = require("react-select")
var PropTypes = require("prop-types")

// also tried these ->
// import React from 'react';
// import createClass from 'create-react-class';
// import PropTypes from 'prop-types';
// import Select from 'react-select';


const options = [
   value: 'chocolate', label: 'Chocolate' ,
   value: 'strawberry', label: 'Strawberry' ,
   value: 'vanilla', label: 'Vanilla' 
];

class User extends React.Component 
  state = 
    selectedOption: null,
  
  handleChange = (selectedOption) => 
    this.setState( selectedOption );
    console.log(`Option selected:`, selectedOption);
  
  render() 
    const  selectedOption  = this.state;

    /*
    return (
             <h2>THIS WORKS!</h2>
    )
    */



    return (
             <Select
                 value=selectedOption
                 onChange=this.handleChange
                 options=options
             />
    )

    // Doesn't work:
    // Uncaught Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object.

  

module.exports = User

我对 React 世界很陌生。我在这里想念什么?我做错了什么?

注意:这并没有解决我的问题:Uncaught Error: Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function but got: object

【问题讨论】:

你为什么把import Select....注释掉了? 我试过import-way 和var Select... 方式。使用importvar 都会出错。如果我使用“导入”,我会得到“元素类型无效:需要一个字符串(对于内置组件)或一个类/函数(对于复合组件)但得到:未定义”(注意未定义的结尾。) 您的导入语法很好(只要您捆绑您的代码)。乍一看,您的其余代码似乎也很好。想也许它在你的应用程序的其他地方?这是一个快速而肮脏的工作示例codesandbox.io/s/zx45kql9q4。 【参考方案1】:

我不确定 module.exports 如何与 React 配合使用。当我使用 ES6 语法尝试您的代码时,它似乎工作正常。

import React from 'react';
import Select from 'react-select';

然后使用 ES6 导出而不是 module.exports:

export default User;

Select 组件似乎不是问题。

【讨论】:

export default User;!谢谢!。

以上是关于php 中如何得到一个对象的类型的主要内容,如果未能解决你的问题,请参考以下文章

如何修复 StreamlitAPIException:(“预期字节,得到一个'int'对象”,'转换失败的列 FG% 类型为对象')

如何让php中通过字段和记录查询得到的mysql返回数据保持原有的数据类型

如何将 PHP 对象复制到不同的对象类型中

如何修复元素类型无效:期望字符串(用于内置组件)或类/函数(用于复合组件)但得到:对象

如何将 ref 作为道具传递:[Vue 警告]:无效的道具:道具“containerRef”的类型检查失败。预期对象,得到 HTMLDivElement?

c#如何将object类型序列化为二进制存入SQLSERVER中,并从数据库中读出来并反序列化得到object对象