• PHP性状的使用


    <?php
    trait Geocodable{
        /** @var string */
        protected $address;
        
        /** @var GeocoderGeocoder */ 
        protected $geocoder;
        
        /** @var GeocoderResultGeocoded */
        protected $geocoderResult;
        
        public function setGeocoder(GeoCoderGeocoderInterface $gocoder)
        {
            $this->geocoder = $gocoder;
        }
        
        public function setAddress($address)
        {
            $this->address = $address;
        }
        
        public function getLatitude()
        {
            if (isset($this->geocoderResult) == false){
                $this->geocodeAddress();
            }
            
            return $this->geocoderResult->getLatitude();
        }
        
        public function getLongitude()
        {
            if (isset($this->geocoderResult) === false){
                $this->geocodeAddress();
            }
            
            return $this->geocoderResult->getLongitude();
        }
        
        protected function geocodeAddress()
        {
            $this->geocoderResult = $this->geocoder->geocode($this->address);
            
            return true;
        }
    }
    
    //使用性状
    class RetailStore
    {
        use Geocodable;
        
        
        //这里是类的实现
    }
    
    
    $geocoderAdapter = new GeocoderHttpAdapterCurlHttpAdapter();
    $geocoderProvider = new GeocoderProviderGoogleMapsProvider($geocoderAdapter);
    $geocoder = new GeocoderGeocoder($geocoderProvider);
    
    $store = new RetailStore();
    $store->setAddress('420 9th Avenue, New York, NY 10001 USA');
    $store->setGeocoder($gocoder);
    
    $latitude = $store->getLatitude();
    $longitude = $store->getLongitude();
     echo $latitude, ':', $longitude;
  • 相关阅读:
    数组方法之find
    检查数组中是否有NaN
    数组方法之includes
    数组方法之lastIndexOf
    数组方法之indexOf
    数组方法之forEach
    col-md-push-*和col-md-offset的区别
    35个jQuery小技巧!
    35个jQuery小技巧!
    VS 2013插件
  • 原文地址:https://www.cnblogs.com/yangcclg/p/6105451.html
Copyright © 2020-2023  润新知